2017-02-24 85 views
0

這是怎樣的一個複雜的問題,但...MySQL的 - 需要選擇只在一個ID,也有另一列

我的數據設置爲兩種可能的數行

id   col1 

1   15 

1   30 

2   15 

2   15 

我只需要選擇行中的一個id,col1在表中的值都是15和30。所以在這種情況下,我需要查詢返回1,因爲id = 2在col1中只有15個。

+0

這個怎麼樣?通過具有count(id)= 2的id從select(select distinct id,col1 from t)中選擇id作爲一個組; – Shiping

回答

3

您必須確保這兩個值:15和30存在於COL1。

首先查詢使用EXISTS,以確保這兩個條件都滿足,EXISTS如果子查詢返回的行返回true一個布爾值,否則返回false。第二個子查詢使用INNER JOIN兩次與本身。僅與具有COL1 = 15相同ID和COL1 = 30。

結果返回行是相同的。

SELECT id 
FROM foo1 f1 
WHERE EXIST (SELECT 1 FROM foo1 WHERE id = f1.id AND col1 = 15) 
AND  EXISTS (select 1 from foo1 where id = f1.id and col1 = 30); 


SELECT  id 
FROM  foo1 f1 
INNER JOIN foo1 f2 ON f2.id = f1.id AND col1 = 15 
INNER JOIN foo1 f3 ON f3.id = f1.id AND col1 = 30; 

我設置了一個dbfiddle示例只是爲了檢查它。

+0

這幾乎工作 - 我結束了內部連接使用子選擇語句。 WHERE ID中(從foo1 F1 選擇不同ID 內部聯接foo1 F2上(f1.id = f2.id和f2.col1 = 15) 內連接上(f1.id = f3.id和f3 foo1 F3 .col1 = 30)您的迴應 兩點意見(這些都是尼特挑剔,但只是爲新人):存在 - >存在 的連接上應該有()周圍時,有一個「和」 謝謝你非常感謝你的迴應!它幫了我很多:) –

相關問題