【发布时间】:2012-11-15 07:41:29
【问题描述】:
嗯,我有一张桌子 -
id map_id
-----------
100 1
100 2
101 1
101 2
101 3
102 3
现在,我需要对这些数据进行 AND 和 OR 运算。也就是说,
或 - 我必须获取 map_id 为 1 或 3 的所有行的 id。因此,如果我查找 1 或 3,则查询应返回
100 102
我可以简单地做到这一点
从 map_id IN (1,3) 的表中选择 id
AND - 如果我查询 1 和 2,那么我想要 ids 100 和 101。而且,我找不到查询。
我最初认为像这样的简单查询应该可以工作,但我错了。
从 map_id = 1 AND map_id = 2 的表中选择 id [不起作用]
我想得到这样的结果,但我的查询没有给我这个。我不想诉诸子查询或连接,好吧,除非我真的不需要。我尝试按 id 分组并使用不同的有子句,但我找到了解决方案。
100 101
【问题讨论】:
-
SELECT id FROM table WHERE map_id IN (1,2) GROUP BY ID HAVING COUNT(DISTINCT map_id) = 2
标签: sql