LEFT JOIN与COUNT获取错误

时间:2014-01-22 22:56:14

标签: 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 
WHERE u.avatar IS NOT NULL
ORDER BY g.uid asc
  

功能db1140411-dualda.COUNT不存在。检查参考手册中的“功能名称解析和解决方案”部分

任何想法?

4 个答案:

答案 0 :(得分:2)

在使用聚合函数时, 使用GROUP BY,但由于COUNT(之间的空格,您会收到此特定错误。

From the MySQL Docs:

  

要求函数调用没有空格   名称和括号之间仅适用于内置函数   有特殊考虑的功能。 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