我正在做数据库类(class)的练习,但我无法完成最后一个练习。
问题是:编写一个查询,返回所有喜欢至少两个绿眼睛的人的名字。消除查询结果中的重复项。
给出了两个表,即: 人员{id、姓名、地址、年龄、眼睛颜色、性别}
和
喜欢 {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
我需要做什么才能让它发挥作用?
提前致谢,
最佳答案
SELECT 和 GROUP BY 子句应使用相同的列 - P1.name。 “COUNT(P2.id) >= 2”应在 HAVING 子句中使用,而不是在 WHERE 中使用
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
关于mysql - JOIN 表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28834467/