這是怎樣的一個複雜的問題,但...MySQL的 - 需要選擇只在一個ID,也有另一列
我的數據設置爲兩種可能的數行
id col1
1 15
1 30
2 15
2 15
我只需要選擇行中的一個id,col1在表中的值都是15和30。所以在這種情況下,我需要查詢返回1,因爲id = 2在col1中只有15個。
這是怎樣的一個複雜的問題,但...MySQL的 - 需要選擇只在一個ID,也有另一列
我的數據設置爲兩種可能的數行
id col1
1 15
1 30
2 15
2 15
我只需要選擇行中的一個id,col1在表中的值都是15和30。所以在這種情況下,我需要查詢返回1,因爲id = 2在col1中只有15個。
您必須確保這兩個值: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示例只是爲了檢查它。
這幾乎工作 - 我結束了內部連接使用子選擇語句。 WHERE ID中(從foo1 F1 選擇不同ID 內部聯接foo1 F2上(f1.id = f2.id和f2.col1 = 15) 內連接上(f1.id = f3.id和f3 foo1 F3 .col1 = 30)您的迴應 兩點意見(這些都是尼特挑剔,但只是爲新人):存在 - >存在 的連接上應該有()周圍時,有一個「和」 謝謝你非常感謝你的迴應!它幫了我很多:) –
這個怎麼樣?通過具有count(id)= 2的id從select(select distinct id,col1 from t)中選擇id作爲一個組; – Shiping