2015-12-02 72 views
-1

孩子我有以下的客戶詳細信息表:sql中找到選擇

Cnmbr, loc,group 
10001  003 
10003  015 
10003 0001  
10003 0002  
10007  006 
10009  003 
10012  006 
10012 0001  
etc 

我想找到所有客戶的詳細信息,對組003和015(也是他們的位置,如果他們有一個)的客戶

所以在這個例子的結果應該是

Cnmbr, loc,group 
10001  003 
10003  015 
10003 0001  
10003 0002  
10009  003 

編輯

這種內部聯接試了一下,但這似乎並沒有工作

select * 
from customers tbl1 
where tbl1.group = '003' or tbl.tbl.group = '015' 
inner join customers tbl2 on tbl1.Cnmbr = tbl2.Cnmbr 
    and tbl1.loc <> tbl2.loc 
+0

哪些DBMS您使用的? Postgres的?甲骨文? –

+0

爲什麼行3(10003 0001)和4(10003 0002)返回? – jarlh

+1

Jarlh,因爲2號線,客戶數10003,在組015則客戶編號10003的所有位置的結果應該apear –

回答

1

使用EXISTS

SELECT * 
FROM mytable AS t1 
WHERE EXISTS (
    SELECT 1 
    FROM mytable AS t2 
    WHERE t1.Cnmbr = t2.Cnmbr AND `group` IN ('003', '015')) 

Demo here

+0

謝謝Giorgos。我不得不改變''組在t2.group,然後它爲我工作。看來我的服務器不明白'' –

+0

@MarcJonkers反引號「'」是在MySQL作爲字段名定界符。當我發佈答案時,我以爲你正在使用MySQL。很高興我能夠幫助你! –