2014-03-25 127 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) 
);