我有2张桌子rozmowa和abonent。我正在尝试这样做:
dbGetQuery(con, "SELECT A.imie, A.nazwisko, A.numer,
COUNT(R.id_abonent_to) AS ile
FROM abonent A LEFT JOIN
rozmowa R ON A.id = R.id_abonent_to
WHERE ile > 4
GROUP BY A.id, A.imie, A.nazwisko, A.numer")
但出现错误
滥用汇总:COUNT()
有人可以向我解释为什么吗?
答案 0 :(得分:2)
也许您将WHERE
与HAVING
混淆了:
SELECT A.imie, A.nazwisko, A.numer, COUNT(*) AS ile
FROM abonent A JOIN
rozmowa R
ON A.id = R.id_abonent_to
GROUP BY A.id, A.imie, A.nazwisko, A.numer
HAVING COUNT(*) > 4;
并非所有数据库都支持HAVING
中的列别名。如果是这样,则可以使用HAVING ile > 4
。
请注意,LEFT JOIN
是不必要的,因为您需要至少5行匹配。 (我想您的查询可能有其他解释,但我想要计算的多行来自R
。)
然后COUNT(*)
被简化。 COUNT()
所使用的列是ON
的一部分。您的COUNT()
版本适用于LEFT JOIN
,但对于您正在执行的操作来说则不必要。