使用逻辑AND运算符更新

时间:2016-12-22 10:13:23

标签: mysql database

我试过运行这个sql

UPDATE table
SET read = 1
WHERE col1_id = 2
AND col3_id = 1;

并返回错误(sql语法错误)

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行'read = 1 WHERE team_notification_id = 2 AND listener_id = 1'附近使用正确的语法

但是当我使用相同的WHERE和AND :)时,在SELECT语句中没有返回错误。

SELECT * 
FROM read
WHERE col1_id = 2 
AND col3_id = 1
请问我做错了什么,我没有看到它。

3 个答案:

答案 0 :(得分:3)

关键字UPDATE后应该有一个表名。如果你的表名实际上有table(这有点奇怪)你应该逃避它以让MySQL知道它不是关键字" table"但实际的表名。

同样的事情是read

tableread都是MySQL关键字(完整列表在这里http://dev.mysql.com/doc/refman/5.7/en/keywords.html)所以如果它是您的实际表名和列名,那么您应该将其转义。< / p>

最好转义所有表名和列名,以防止出现类似问题。

在MySQL中转义是使用反引号符号完成的,因此您的查询将如下所示:

UPDATE `table`
SET `read` = 1
WHERE `col1_id` = 2
AND `col3_id` = 1;

答案 1 :(得分:1)

UPDATE tablename
SET `field_name` = 1
WHERE col1_id = 2
AND col3_id = 1;

答案 2 :(得分:-1)

UPDATE table
SET [read] = 1
WHERE col1_id = 2
AND col3_id = 1;