我正在为数据库课程练习,但我无法完成最后一次练习。
问题是:写一个查询,返回所有喜欢至少两个绿眼睛的人的名字。消除查询结果中的重复项。
给出了两个表,即: 人员{ id ,姓名,地址,年龄,eyeColor,性别}
和
喜欢{ id ,personA_id→人物,personB_id→人物}
我写的代码是:
SELECT distinct P1.name, COUNT(P2.id)
FROM Persons P1
INNER JOIN Likes L
On P1.id = L.PersonA_id
INNER JOIN Persons P2
ON P2.id = L.PersonB_id
WHERE P2.eyeColor = "green"
AND COUNT(P2.id) >= 2
GROUP BY name
我需要做些什么才能让它发挥作用?
提前致谢,
答案 0 :(得分:0)
SELECT和GROUP BY子句应使用相同的列 - P1.name。 “ COUNT(P2.is)> = 2 ”应该在不在WHERE中的HAVING子句中使用
SELECT
P1.name,
COUNT(P2.id)
FROM
Persons P1
INNER JOIN Likes L On P1.id = L.PersonA_id
INNER JOIN Persons P2 ON P2.id = L.PersonB_id
WHERE
P2.eyeColor = "green"
GROUP BY
P1.name
HAVING
COUNT(P2.id) >= 2