2014-07-26 41 views
0

我有一个表,其中每个地址有不同的类型,每种类型一行。如何找到我需要的确切类型的地址?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 id为1和3。

回答

1

组不会忽略地址,然后在计数不同typeid小号在having条款

select id from your_table 
where typeid in (1,2) 
group by id 
having count(distinct typeid) = 2 
1

您可以使用INTERSECT这个

select id 
from tbl 
where typid = 1 
intersect 
select id 
from tbl 
where typid = 2 

虽然它不会在mysql中工作,如果这恰好是您正在使用的数据库。

+0

感谢,但@sysboard它的工作它不以某种方式工作... – sysboard

+0

,你可以看到这里的http:// sqlfiddle。 com /#!6/6abff/1/0。也许你实际上并没有使用SQL Server并使用不同的数据库? –

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) 
+0

感谢您的回应。 Juergen d已经发布在你和他的代码为我工作,所以我投你一票。 – sysboard