自加入SQL查询以返回至少有两个相同子项的父项
问题描述:
我有这个表设置。自加入SQL查询以返回至少有两个相同子项的父项
create table holdMyBeer
(
Id int,
Name varchar(20)
)
insert into holdMyBeer
values (1, 'park'), (1, 'washington'), (1, 'virginia'),
(2, 'harbor'), (2, 'premier'), (2, 'park'),
(3, 'park'), (3, 'washington'), (3, 'virginia'), (3, 'Ball');
我找的ID(父母),至少有park, washington and virginia
姓名(孩子)。
我在小提琴上有答案。 http://sqlfiddle.com/#!6/e7346/1但是必须有更好的方法来做到这一点。
答
这个概念被称为条件聚合。我正在将Id分组,然后通过使用子句和检查来检查公园,华盛顿,弗吉尼亚州是否有至少一个入口。这应该回答你的问题。
SELECT Id
FROM holdMyBeer
GROUP BY Id
HAVING SUM(CASE WHEN Name = 'park' THEN 1 ELSE 0 END) >= 1 AND
SUM(CASE WHEN Name = 'washington' THEN 1 ELSE 0 END) >= 1 AND
SUM(CASE WHEN Name = 'virginia' THEN 1 ELSE 0 END) >= 1;