好吧,我有三个表,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')