我有一张桌子,A:
|Id|alias |
------------
|1 |alice |
|2 |alice |
|2 |bob |
|3 |alice |
|3 |bob |
|3 |charlie|
我有另一张桌子,N:
|name |
-------
|alice|
|bob |
我正在寻找一个查询来返回第一个表中的所有ID,其中两个第二个表中的别名。在这个例子中,我想看看
`(2, 3)`
我不能使用简单的连接
select Id
from A
join N on A.alias = B.name
A中的每条记录都有alice,所以这个查询返回1,这不是我想要的。我在思考这种事情的语法时遇到了麻烦。建议?我正在使用TSQL和Sql Server,如果它有所作为。
TIA
答案 0 :(得分:1)
使用group by
和having
:
select id
from a join
n
on a.alais = n.name
group by id
having count(*) = (select count(*) from n);
这假设n
中的名称是唯一的。如果没有,则需要count(distinct)
而不是两个count(*)
。