2012-03-29 32 views
1

我有一個表和ID和值。他們只是一起獨特。mysql正確地構造一個選擇查詢

ID VALUE 
1 value1 
1 value2 
2 value1 
3 value2 
3 value3 
3 value4 
4 value3 
5 value1 

假設我是給定的值「值2」和「值3」,我想選擇符合這兩個值的ID(即3)

我可以

SELECT ID FROM table WHERE VALUE IN("value2", "value3") 

但是,它返回的值也與任何一個匹配。有沒有辦法只查詢那些匹配這兩個值?

+1

這是一個可怕的稱號。 – 2012-03-29 22:05:02

回答

1

你應該使用GROUP BY與具有

SELECT ID FROM table WHERE VALUE IN("value2", "value3") GROUP BY ID HAVING COUNT(*) = 2 
+0

優秀。正是我需要的 – nick 2012-03-29 22:03:05

1

嘗試以下操作:

SELECT id FROM table WHERE value = "value2" and id in (SELECT id FROM table WHERE value = "value3") 
1
SELECT t1.id FROM table AS t1 JOIN table AS t2 ON t1.id=t2.id 
    WHERE t1.value="value2" AND t2.value="value3"