COUNT在JOIN中不起作用(SQL)

时间:2014-08-01 12:08:39

标签: mysql join count

我尝试在MySQL查询中添加COUNT,因为我需要所有行的数量。

原单: SELECT a.*, b.device_name, FROM ( SELECT * FROM qslist ORDER BY ID DESC LIMIT 500) a JOIN device b ON a.device = b.ID

NEW: SELECT a.*, b.device_name, a.COUNT(ID) AS out FROM ( SELECT * FROM qslist ORDER BY ID DESC LIMIT 500) a JOIN device b ON a.device = b.ID

遗憾的是,新查询未执行,显示以下错误消息:

#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便使用接近' out FROM(SELECT * FROM qslist ORDER BY ID DESC LIMIT 500)a JOIN设备b on a'在第1行

这里有什么问题?

2 个答案:

答案 0 :(得分:2)

out是MySQL中的保留字。您可以将其转义或命名为其他内容:

SELECT a.*, b.device_name, COUNT(a.ID) AS cnt
FROM ( SELECT * FROM qslist ORDER BY ID DESC LIMIT 500) a JOIN
     device b
     ON a.device = b.ID;

此外,a.位于id旁边,而不是count()

修复了语法错误。

此查询不太可能正在执行您想要的操作,因为它只返回一行。 count()使其成为没有group by的聚合查询。但是,您的问题是关于语法错误,而不是您未说明目的的正确查询。 (如果你想修复查询,我建议用样本数据和期望的结果提出另一个问题。)

答案 1 :(得分:0)

你的伯爵会为你提供一排。但是a。*和b.device_name可能有多行。找到计数你需要有一个更好的单独查询。