SQL在另一个表的每一行上筛选一个表
我有一张桌子,一张:SQL在另一个表的每一行上筛选一个表,sql,sql-server-2008,Sql,Sql Server 2008,我有一张桌子,一张: |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
|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使用
分组方法
和进行
:
select id
from a join
n
on a.alais = n.name
group by id
having count(*) = (select count(*) from n);
这假定
n
中的名称是唯一的。如果没有,您需要的是count(distinct)
而不是两个count(*)
s.您还可以包括预期结果吗?对不起,我的预期结果有点隐藏在文本中。我为你喊了出来。