Mysql 左连接计数获取错误
我想计算一个左连接mysql的条目,但我总是得到一个错误Mysql 左连接计数获取错误,mysql,sql,select,count,left-join,Mysql,Sql,Select,Count,Left Join,我想计算一个左连接mysql的条目,但我总是得到一个错误 SELECT g.uid,g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT (g.uid) as hits FROM jos_findme_gallery as g LEFT JOIN jos_findme as u ON g.uid= u.user_id LEFT JOIN jos_alpha_userpoints as a ON g.uid= a.userid
SELECT g.uid,g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT (g.uid) as hits
FROM jos_findme_gallery as g
LEFT JOIN jos_findme as u ON g.uid= u.user_id
LEFT JOIN jos_alpha_userpoints as a ON g.uid= a.userid
WHERE u.avatar IS NOT NULL
ORDER BY g.uid asc
函数db1140411-dualda.COUNT不存在。检查参考手册中的“函数名解析和解析”部分
有什么想法吗?你需要根据一些东西分组。COUNT是一个聚合函数
SELECT g.uid,g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT(1) as hits
...
GROUP BY g.uid
ORDER BY ...
还有,为什么有两个左连接?您希望从两个联接表中的哪一个计算行数?在使用聚合函数时,您应该使用分组依据,但由于count
和(
)之间存在空格,因此会出现此特定错误
函数调用的编写不带空格的要求
名称和括号之间的值仅适用于内置的
具有特殊注意事项的函数。COUNT
就是这样一个名称
要解决此问题,请去掉空格…并加入一个groupby
,以明确:
SELECT
g.uid,
g.datei,
u.id,
u.avatar,
u.avatarapproved,
a.points,
COUNT(g.uid) as hits
FROM jos_findme_gallery as g
LEFT JOIN jos_findme as u ON g.uid= u.user_id
LEFT JOIN jos_alpha_userpoints as a ON g.uid= a.userid
WHERE u.avatar IS NOT NULL
GROUP BY
g.uid,
g.datei,
u.id,
u.avatar,
u.avatarapproved,
a.points
ORDER BY g.uid asc
我认为计数和您的计数之间没有空格,正如我们在其他示例中看到的那样。尝试以下方法:
SELECT g.uid, g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT(g.uid) AS hits
FROM jos_findme_gallery AS g
LEFT JOIN jos_findme AS u ON g.uid= u.user_id
LEFT JOIN jos_alpha_userpoints AS a ON g.uid= a.userid
WHERE u.avatar IS NOT NULL
GROUP BY u.id
ORDER BY g.uid ASC
如果显示表、数据和查询的预期结果,则需要按g.uid对它们进行分组,计数函数才能工作。这也可能是一条不同的错误消息……您不知道,但结果未定义。