使用主键的SQL查询

时间:2011-11-15 23:06:14

标签: sql indexing key sql-update

我有一个包含三列(key,id,loglevel)的SQL表。键列设置为主键,并自动递增。

想象一下:

key   id   loglevel
1     223     5
2     445     8

现在我想通过选择对应于特定值“key”的行来更新表。

我正在使用该行:

mysql_query("UPDATE Logs SET loglevel = 4 WHERE key = 2;"); 

然而,这不起作用。

当我将其更改为

mysql_query("UPDATE Logs SET loglevel = 4 WHERE id = 445;");

它工作正常。但是,我想基于“密钥”更新,而不是“id”。

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:6)

在MySQL中,密钥是reserved word,必须引用。

"UPDATE Logs SET loglevel = 4 WHERE `key` = 2"

我还强烈建议您在查询失败时查看mysql_error的值,因为这可能会为您提供自己解决此问题所需的提示。

  

错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“key”附近使用正确的语法

答案 1 :(得分:1)

“key”是MySQL中的保留字(参见http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。我建议使用除“key”之外的单词作为主键,因为稍后可能会混淆一个名为“key”的列而另一个名为“id”的常用约定是使用“id”作为主键。 ..