我試圖只選擇所有三個組中的對象(1,2,3)。
與「WHERE gid IN(1,2,3)」選擇我得到一個OR選擇。我需要的是一個AND選擇。選擇WHERE IN與邏輯AND語句
OBJECT_TABLE AS o
id | field1 | field2 | ...
VALUES
1, a, b
2, c, d
3, e, f
...
GROUP_XREF_TABLE AS gx
oid | gid
VALUES
1, 1
1, 2
1, 3
2, 2
3, 1
3, 2
...
SELECT DISTINCT o.id, gx.gid FROM `OBJECT_TABLE` AS o
LEFT JOIN `GROUP_XREF_TABLE` AS gx ON o.id = gx.oid
WHERE gx.gid IN (1,2,3)
這會輸出所有行。我需要一個只輸出對象id爲1的行的WHERE子句,因爲只有該對象在所有三個組中。
它是一個較大選擇的一部分,所以它的重要性在於只應在where語句內完成(如果需要,子查詢應該沒問題)。
的感謝!這應該工作,但我沒有得到任何結果。我認爲SELECT oid應該是gid? – Mike 2013-04-24 12:00:38
@Mike很好的發現!我已經更新了答案。 – 2013-04-24 12:25:45
我實際上不得不延長它,因爲你的查詢得到了我的任何類型的對象,只要它們是三個。我需要指定組。所以我這樣做: WHERE gx.oid IN(SELECT oid FROM GROUP_XREF_TABLE as gx2 where gid IN(1,2,3)GROUP BY oid HAVING count(*)= 3) – Mike 2013-04-24 13:23:17