好吧,我有三個表,Colors
,People
,Likes
同時具有Y和Z(SQL)選擇X
Colors
包含ID和名稱的顏色,People
包含IDS和人名,Likes
包含color_id
和people_id
來描述哪些人喜歡哪種顏色。
現在,給出一個顏色列表,我如何選擇每個喜歡列表中每種顏色的人(如果有的話)?
好吧,我有三個表,Colors
,People
,Likes
同時具有Y和Z(SQL)選擇X
Colors
包含ID和名稱的顏色,People
包含IDS和人名,Likes
包含color_id
和people_id
來描述哪些人喜歡哪種顏色。
現在,給出一個顏色列表,我如何選擇每個喜歡列表中每種顏色的人(如果有的話)?
select p.id, p.name
from people p
join likes l on l.people_id = p.id
join colors c on l.color_id = c.id
where c.name in ('blue','green','red')
group by p.id, p.name
having count(distinct c.name) = 3
您可以GROUP BY加入喜歡的人,並檢索那些HAVING COUNT(*)與Color列表中的行數相等的元組。這樣,您
SELECT * FROM People p
INNER JOIN Likes l ON l.people_id = p.people_id
INNER JOIN Colors c ON l.color_id = c.color_id
WHERE c.name IN ('List of colors')