我不能在mysql查询中使用'time'字样?

时间:2012-01-22 23:29:27

标签: mysql sql

我不能在mysql查询中使用'time'字作为我的列名。
这是我的查询代码:(不工作)

UPDATE ip_p SET deger =  '-1' TIME =  '123' WHERE ip =  '12' AND premium =  '1'

错误是:

  

#1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'time ='123'WHERI ip = '12'和premium ='1''在第1行

但是这段代码正在运作:

UPDATE ip_p SET deger =  '-1' WHERE ip =  '12' AND premium =  '1'

我是否需要更改我的列名?

4 个答案:

答案 0 :(得分:3)

1)您在deger = '-1'

之后缺少昏迷(,)

2)您可以将TIME括在反引号(`)中以防止其他可能的错误

正确(试试吗?)查询拼写:

UPDATE ip_p SET deger =  '-1', `TIME` =  '123' WHERE ip =  '12' AND premium =  '1'

<强>更新

回应评论:

deger列减少1的正确查询将是:

UPDATE ip_p SET deger =  deger-1, `TIME` =  '123' WHERE ip =  '12' AND premium =  '1'

如果你只需要将它设置为-1,那么执行:

UPDATE ip_p SET deger = -1, `TIME` =  '123' WHERE ip =  '12' AND premium =  '1'

另请注意,带单引号(')的语法只能用于字符串(varachar(...)列等);对于不正确的数字。如果您需要指定数字 - 只需在没有任何引号的情况下执行此操作。我已经为deger列改了这个(显然它是数字,如果你想从中减去一些东西)但不是其他的,因为我不知道它们的类型。如果列TIMEippremium也是数字,那么您还需要从其值中删除引号。

答案 1 :(得分:1)

您可以使用反引号转义关键字“time”:

UPDATE ip_p SET deger =  '-1', `TIME` =  '123' WHERE ip =  '12' AND premium =  '1'

我相信你也删掉了一个逗号,这可能是你遇到错误的原因。但一般来说,如果你有一个特殊于MySQL的列名,那就逃避吧。

答案 2 :(得分:0)

您可以,但必须将该名称括在反引号`中。作为一般规则,我始终将列名包含在其中,因为它清楚地表明它们是什么。

答案 3 :(得分:0)

您在TIME之前缺少逗号:

UPDATE ip_p SET deger =  '-1', TIME =  '123' WHERE ip =  '12' AND premium =  '1'
                             ^