0

可能重复:
MySQL 选择连接位置和位置

好吧,我有一张桌子-

 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
4

1 回答 1

3

试试这个

select id 
from yourtable
where map_id IN (1,2)
group by id
having COUNT(distinct map_id)=2 -- where this 2 is the number of items you want to find

这种技术称为关系划分。

于 2012-11-27T16:20:54.943 回答