1

我有一个这样的表:

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

我想选择 All such PatIDwhich has Name=A and Name = B

所以我应该只得到10结果。

应该查询什么?

4

2 回答 2

2

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

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

请参阅带有演示的 SQL Fiddle

于 2013-07-16T19:06:31.967 回答
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。

于 2013-07-16T19:30:16.333 回答