我试图只选择所有三个组中的对象(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