我有两张桌子,罗兹莫瓦和阿伯南特。我想这么做:
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()
谁能给我解释一下原因吗?
发布于 2019-01-11 16:16:09
也许你把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,但对于您所做的工作来说是不必要的。
https://stackoverflow.com/questions/54150242
复制相似问题