我想计算左连接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
WHERE u.avatar IS NOT NULL
ORDER BY g.uid asc
功能db1140411-dualda.COUNT不存在。检查参考手册中的“功能名称解析和解决方案”部分
任何想法?
答案 0 :(得分:2)
在使用聚合函数时, 应1>使用GROUP BY
,但由于COUNT
和(
之间的空格,您会收到此特定错误。
要求函数调用没有空格 名称和括号之间仅适用于内置函数 有特殊考虑的功能。
COUNT
就是这样一个名字。
要解决这个问题,请摆脱空间...并将GROUP BY
投入到显式:
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
答案 1 :(得分:1)
你需要分组。 COUNT是一个聚合函数。
SELECT g.uid,g.datei, u.id, u.avatar, u.avatarapproved, a.points, COUNT(1) as hits
...
GROUP BY g.uid
ORDER BY ...
另外,为什么你有2个左连接?您想要从哪两个连接表计算行数?
答案 2 :(得分:0)
我认为在其他例子中我们可以看到计数和计数之间没有空格。
答案 3 :(得分:0)
试试这个:
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