2014-03-25 100 views
0

我有我下面的输出从多个表选择多行satifies条件

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等

回答

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 
0

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

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