选择基于多行的条件

时间:2013-07-16 19:04:51

标签: sql sql-server select

我有一张像这样的表:

TableA
----------------------------
ID   - Name  - PatID
1       A         10
2       B         10
3       A         11
4       A         12
5       B         13

我想选择具有PatID的所有Name=A and Name = B

所以我应该得到10作为结果。

应该查询什么?

2 个答案:

答案 0 :(得分:2)

您应该能够使用以下查询来获得结果:

select patid
from tablea
where name in ('A', 'B')
group by patid
having count(distinct name) = 2;

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

如果您需要来自A组和B组的信息,您也可以这样做:

SELECT AGroup.ID AS AId, BGroup.ID AS BId
FROM TableA AGroup
JOIN TableB BGroup
    ON AGroup.Name = 'A'
    AND BGroup.Name = 'B'
    AND AGroup.PatID = BGroup.PatID

如果您有多个条目,这也会保留重复项,例如Name = A和PatID = 10。