SQL Server-通过唯一键查找行模式组

时间:2018-09-20 11:43:10

标签: sql sql-server

我需要一个查询,该查询将比较两个表并找到完全匹配的行集。 我有两个桌子

第一张桌子

ID   uniqueKey

 1    A
 2    A
 3    A
 1    B
 2    B
 4    C

如果我将另一个表传递了以下数据

ID
1
2
3

然后它应该返回'A'

如果输入表是

ID
1
2

它应该返回'B'

如果输入表为

ID
1
2
3
4

它不应返回任何内容

如果输入表是

ID
 1

然后它不应返回任何内容

2 个答案:

答案 0 :(得分:2)

我不确定“传递表格”是什么意思,但是您可以按照自己的意愿做:

select t1.uniqueKey  -- doesn't seem very unique to me
from table1 t1 left join
     table2 t2
     on t1.id = t2.id
group by t1.uniqueKey
having count(*) = count(t2.id) and -- all ids in table1 match table2
       count(*) = (select count(*) from table2)  -- all table2 ids are present

答案 1 :(得分:0)

或者,也可以使用array_agg

select V2 as u_key from
      (select array_agg(ID)as V1,unique_key as V2 from t1 group by unique_key) Table1 
      join 
      (select array_agg(ID) as V3 from t2) Table2 
      on Table1.V1= Table2.V3;