Questions tagged «mysql»

MySQL是使用结构化查询语言(SQL)的免费,开放源代码关系数据库管理系统(RDBMS)。请勿将此标签用于其他数据库,例如SQL Server,SQLite等。那些是不同的数据库,它们都使用自己的SQL方言来管理数据。

6
如何执行UPSERT,以便在更新部分中可以同时使用新值和旧值
愚蠢但简单的示例:假设我有一个表“ Item”,其中保存了接收到的项目的总数。 Item_Name Items_In_Stock 项目名称是此处的主键。每当我收到数量为X的物料A时,如何实现以下目标。 如果该商品不存在,则为商品A插入一个新的摘要,并将库存商品设置为X;如果存在一条记录,其中库存商品为Y,则库存商品的新值为(X + Y) INSERT INTO `item` (`item_name`, items_in_stock) VALUES( 'A', 27) ON DUPLICATE KEY UPDATE `new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A' ) 我的问题是我的实际表中有多个列。在更新部分中编写多个select语句是一个好主意吗? 我当然可以用代码完成,但是有更好的方法吗?

7
该列是从另一列计算出来的?
给出下表: id | value -------------- 1 6 2 70 有没有一种方法可以添加基于同一表中另一列自动计算的列?就像一个VIEW,但是属于同一张表。例如,calculated将是的一半value。Calculated应该在value更改时自动更新,就像VIEW一样。 结果将是: id | value | calculated ----------------------- 1 6 3 2 70 35
78 mysql  sql 

2
从--all-databases转储导入单个数据库
是否可以从--all-databases mysqldump导入单个数据库?我想我可以手动修改文件,但想知道是否有任何命令行选项可以执行此操作。 我正在移动服务器,并拥有许多数据库,目前我目前不需要或不希望使用其中的大多数数据库,但是如果需要,可以选择还原单个数据库。

6
MySQL utf8mb4,保存表情符号时出错
我尝试从MySQL数据库中的服务中保存用户的名称。这些名称可以包含em等表情符号(仅作为示例) 经过一些搜索后,我发现此stackoverflow链接到本教程。我按照步骤操作,看起来一切都配置正确。 我有一个数据库(字符集和排序规则设置为utf8mb4(_unicode_ci)),一个名为TestTable的表,也采用这种方式配置,还有一个“文本”列,也采用这种方式配置(VARCHAR(191)utf8mb4_unicode_ci)。 当我尝试保存表情符号时,出现错误: Example of error for shortcake (🍰): Warning: #1300 Invalid utf8 character string: 'F09F8D' Warning: #1366 Incorrect string value: '\xF0\x9F\x8D\xB0' for column 'Text' at row 1 我唯一能正确保存的表情符号是太阳☀️ 尽管我并没有尝试所有的方法。 我的配置中缺少什么吗? 请注意:所有保存测试均不涉及客户端。我使用phpmyadmin手动更改值并保存数据。因此,在服务器正确保存表情符号之后,我将处理客户端的正确配置。 另一边注:目前,当保存表情符号时,我会遇到上述错误,或者没有错误,并且的数据Username 🍰将存储为Username ????。错误或无错误取决于我保存的方式。通过SQL语句创建/保存时,我带问号保存,当内联编辑时,我带问号保存,当使用编辑按钮进行编辑时,出现错误。 谢谢 编辑1: 好,所以我想我找到了问题,但没有找到解决方案。似乎数据库特定的变量未正确更改。 当我以root用户身份登录服务器并读取变量(全局)时: 使用的查询:SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; …
77 mysql  emoji  utf8mb4 

7
使用MySQL的FOR UPDATE锁定时,究竟锁定了什么?
这不是完整/正确的MySQL查询专用伪代码: Select * from Notifications as n where n.date > (CurrentDate-10 days) limit by 1 FOR UPDATE http://dev.mysql.com/doc/refman/5.0/en/select.html指出:如果将FOR UPDATE与使用页或行锁的存储引擎一起使用,则查询所检查的行将被写锁,直到当前交易结束 是这里只有被MySQL锁定返回的一条记录还是必须扫描以查找单个记录的所有记录?
77 mysql  sql 

12
在同一列上使用多个WHERE条件进行选择
好的,我想我可能会忽略一些显而易见的/简单的事情...但是我需要编写一个查询,该查询仅返回与同一列上的多个条件匹配的记录... 我的表是一个非常简单的链接设置,用于将标志应用于用户... ID contactid flag flag_type ----------------------------------- 118 99 Volunteer 1 119 99 Uploaded 2 120 100 Via Import 3 121 100 Volunteer 1 122 100 Uploaded 2 等等...在这种情况下,您会看到联系人99和100都被标记为“志愿者”和“已上传” ... 我需要做的是返回仅与通过搜索表单输入的多个条件相匹配的那些contactid ... contactid必须与所有选择的标志匹配...在我看来,SQL应该类似于: SELECT contactid WHERE flag = 'Volunteer' AND flag = 'Uploaded'... 但是...什么也没返回...我在这里做错了什么?

4
删除MySQL中列的最后两个字符
我有一个SQL列,其中的条目是字符串。我需要在修剪最后两个字符后显示这些条目,例如,如果该条目199902345应该输出1999023。 我尝试研究TRIM,但看起来只有在我们知道最后两个字符是什么的情况下,它才能提供修剪功能。但就我而言,我不知道最后两个数字是什么,只需要丢弃它们即可。 简而言之,什么是MySQL字符串操作可以修剪字符串的最后两个字符? 我必须补充一点,字符串的长度不是固定的。它可以是9个字符,11个字符或任何其他字符。
77 mysql  sql  string 


5
如何在OS X Yosemite / El Capitan上启动时自动加载MySQL
升级OS X后,我的MySQL安装在启动时停止加载。 这在MySQL穿行说: “启动项目安装将变量MYSQLCOM = -YES-添加到系统配置文件/ etc / hostconfig中。如果要禁用MySQL的自动启动,请将此变量更改为MYSQLCOM = -NO-。” 因此,我打开了该文件,它说: # This file is going away AFPSERVER=-NO- AUTHSERVER=-NO- TIMESYNC=-NO- QTSSERVER=-NO- MYSQLCOM=-YES- 我假设OSX开发人员已添加,# This file is going away但我不确定。 如果是这样,在OSX Yosemite上启动时启动MySQL的正确方法是什么?

8
mysql数据目录位置
在将其dmg文件版本64位下移后,我在Mac中安装了mysql。尝试创建数据库时,出现错误1006-无法创建数据库。浏览了多个网站后,似乎由于用户所有权设置的mysql“数据目录”位置需要更改。 mysql默认的“数据目录”在哪里?我在本地主机中找不到/ var / lib / mysql。 谢谢。



6
MySQL SELECT DISTINCT多列
假设我a, b c, d在MySQL数据库的表中有列。我想做的是选择表中所有这4列的所有唯一值(只有唯一值)。我尝试了类似的东西: SELECT DISTINCT a,b,c,d FROM my_table; SELECT DISTINCT a,b,c,d FROM my_table GROUP BY a,b,c,d; 这些都不起作用。有人可以帮忙吗? 谢谢 注意我想要分别显示各列的不同值a, b, c d。不是价值的独特组合
77 mysql  sql  distinct 

8
如何在MySQL中转义特殊字符?
例如: select * from tablename where fields like "%string "hi" %"; 错误: 您的SQL语法有误。检查与您的MySQL服务器版本相对应的手册,以在第1行的“ hi”“”附近使用正确的语法 如何建立此查询?
77 mysql 

2
SQL-如果存在,则将更新插入其他
我想要做的就是INSERT在我的数据库的用户,但IF EXISTS它应该UPDATE排,ELSE INSERT INTO一个新行。 Ofcourse我连接到数据库第一和GET的$name,$email并$birthday从URL字符串。 $con=mysqli_connect("localhost","---","---","---"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $name=$_GET['name']; $email=$_GET['email']; $birthday=$_GET['birthday']; 可以,但是只添加新行; mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')"); mysqli_close($con); 这是我尝试过的; mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES '$name', '$email', '$birthday' ON DUPLICATE …
77 mysql  sql  insert  exists 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.