我有一个表,每个地址都有不同的类型,每种类型一行。如何查找我需要的确切类型的地址?
例如
ID TypID Street
1 1 Street 1
1 2 Street 1
2 2 Street 2
3 1 Street 3
3 2 Street 3
在上面我需要找到类型为1和2的地址。该查询结果应该是id为1和3的地址。
答案 0 :(得分:1)
按id
分组,然后计算typeid
子句中不同的having
select id from your_table
where typeid in (1,2)
group by id
having count(distinct typeid) = 2
答案 1 :(得分:1)
您可以使用INTERSECT
select id
from tbl
where typid = 1
intersect
select id
from tbl
where typid = 2
虽然它恰好是您正在使用的数据库,但在mysql中不起作用。
答案 2 :(得分:1)
这可以通过内部联接完成,如下面的
select y2.*
from <your_table> Y1
JOIN <your_table> Y2
ON Y1.ID = Y2.ID
AND Y1.Type_id in (1,2)
AND Y2.ID in (1,3)