选择多行满足条件

时间:2014-03-25 13:58:19

标签: sql

我从多个表中获得以下输出

Name Number Code

abc 1111    A
def 1122    A
def 1177    B
xyz 1001    A
abc 1117    D
abc 1189    C
abc 1059    B
def 1002    C

我需要名称包含所有代码的选择行。在这里命名' abc'拥有所有代码A,B,C,D。所以我应该获得名称为abc的所有行。代码可以有更多的值,如D,E等

2 个答案:

答案 0 :(得分:0)

我假设唯一的代码数是5.如果不改变having子句中唯一代码的数量。

select name,number,code
from
table A inner join 
(SELECT name,count(distinct code)
from Table
group by name
having count(distinct code) >= 5) B
on A.name = B.name

答案 1 :(得分:0)

按名称分组并计算不同的代码。然后将这些名称保留在计数等于表的所有记录的不同代码计数的位置。最后选择找到名称的记录。

select * 
from mytable 
where name in
(
  select name
  from mytable 
  group by name
  having count(distinct code) = (select count(distinct code) from mytable)
);