遇到问题

时间:2011-04-21 01:56:54

标签: mysql

我有一个包含user_idlast_updated

的数据库
SELECT user_id, MAX(last_updated) as timestamp 
  FROM online 
 WHERE user_id > 0 
 GROUP_BY user_id

我收到此错误

  

您的SQL语法有错误;   检查对应的手册   您的MySQL服务器版本   在'GROUP_BY附近使用正确的语法   第1行的user_id'

SELECT user_id, MAX(last_updated) as timestamp 
  FROM online 
 WHERE user_id > 0 
 GROUP_BY user_id

有人建议我使用上面的查询,所以我不确定为什么我会收到此错误

我用Google搜索group_by并且看不出我做错了什么。我想也许是as timestamp但不确定!

3 个答案:

答案 0 :(得分:5)

GROUP BY而非GROUP_BY ...

SELECT user_id, MAX(last_updated) as timestamp 
  FROM online 
 WHERE user_id > 0 
 GROUP BY user_id

更新

根据评论,还要注意 timestamp 是一个保留字。您应该使用别名(即max_last_updated)或用反引号(即`timestamp`)来逃避别名(<{p>)

答案 1 :(得分:1)

更改代码
SELECT user_id, MAX(last_updated) as timestamp 
FROM online WHERE user_id > 0 GROUP_BY user_id

SELECT user_id, MAX(last_updated) as `timestamp` 
FROM online WHERE user_id > 0 GROUP BY user_id

保留字(例如timestamp只能使用反引号'''包含的标识符。

另外GROUP_BY - &gt; GROUP BY *(两个字,SQL关键字中永远不会有'_')*。

更好的是不使用保留字,因为它们让人感到困惑(并且反击让我的头部受伤)

答案 2 :(得分:0)

timestamp是MySQL使用的数据类型,尝试将其更改为其他内容。

相关问题