2016-07-24 113 views
1

我有這樣一個查詢SELECT col1, col2 FROM t WHERE col1>1645 AND (col2=5 OR col2=7 OR col2=9) 我想獲取所有行,對於col1的某個值,所有由col2上的條件給出的值存在。所以e。 G。從這些記錄中MySQL根據條件選擇其中兩列值至少出現一次的行

1700, 5 
1700, 7 
1700, 8 
1700, 9 

3將同時從下面的意志沒有,因爲COL2 = 7丟失

1800, 4 
1800, 5 
1800, 6 
1800, 9 

回答

2

嗯進行選擇,我認爲這是一個有點棘手。這個想法是找到具有col2的全部三個值的col1值。然後,查詢表以獲得匹配的值col1col2值。

SELECT t.* 
FROM t 
WHERE t.col2 IN (5, 7, 9) AND 
     t.col1 IN (SELECT col1 
       FROM t 
       WHERE col1 > 1645 AND col2 IN (5, 7, 9) 
       GROUP BY col1 
       HAVING COUNT(DISTINCT col2) = 3 
       ); 
0

也許我想念你的問題,但這是你在問什麼? :

Select * from T INNER JOIN 
(
    select Col1 , Count(Distinct Col2) as Check_All_Values From T 
    Where T.Col2 in (5,7,9) 
    Group by Col1 
    Having Count(Distinct Col2) = 3 
) B 
ON T.id = B.id 
WHERE T.Col2 in (5,7,9) 
+0

這不會返回任何結果。 col2如何在同一行中等同一個不同的值? – sgeddes

+0

@ sgeddes權利:) – pedmillon

+0

大聲笑...編輯答案...看看是否有用 – objectNotFound

相關問題