2013-07-11 81 views
0

我有兩個表,一個有數據,另一個有一些數據值。我需要選擇所有的數據,其中有值這樣的: (data=1 OR data=2) AND (data=3 OR data=4)MySQL分組查詢OR&AND

對於每一個信息OFC可能有很多值,所以它應該是GROUP BY,但是這是我的這一切的想法。我試過這樣的事情: SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.info_id WHERE val IN(1)AND val IN(2)GROUP BY ID

當然,它不起作用,因爲在一個字段中不存在具有不同數字的信息。你能幫忙嗎?

回答

1

您可以用having條款做到這一點:

SELECT id 
FROM t1 LEFT JOIN t2 ON t1.id = t2.info_id 
GROUP BY id 
having (sum(data = 1) > 0 or sum(data = 2) > 0) and 
     (sum(data = 3) > 0 or sum(data = 4) > 0) 

sum(data = 1)計數匹配值,其中id相同的行內的行數每個表達式。

注意:這將返回匹配條件的id。要獲取原始數據,您需要回到表格。

+0

非常感謝。我總是忘記那個過濾器。 – Goover