SQL - 查询多行中的多个类型

时间:2014-07-26 22:10:16

标签: sql sql-server tsql

我有一个表,每个地址都有不同的类型,每种类型一行。如何查找我需要的确切类型的地址?

例如

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的地址。

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)