帮我写一个sql,只有当第2列记录与表2完全相同时才需要选择表1的第1列数据
例: 表1
Column1 Column2
A 1
A 2
A 3
B 1
B 2
B 3
B 4
表2
Column1 Column2
A 1
A 2
A 3
A 4
B 1
B 2
B 3
B 4
我需要只看到第1列中的B,因为B的第2列数据与第2列完全匹配。
案例
表1 Column1 Column2 C 1 C 2 C 3 C 5 表2 Column1 Column2 C 1 C 2 C 3 C 4
虽然记录的数量与记录匹配但不应该考虑C答案 0 :(得分:0)
您可以使用外部join
和聚合:
select t2.column1
from table2 t2 left join
table1 t1
on t2.column1 = t1.column1 and t2.column2 = t1.column2
group by t2.column1
having count(*) = count(t1.column1);
having
子句确保原始数据中的所有行都匹配。这假定column2
在任一表中的给定column1
值都没有重复值。
答案 1 :(得分:0)
尝试这个:
select distinct col1 from t1
where col1 not in
(select col1 from
(
select t2.col1,t2.col2
from t2
minus
select t1.col1,t1.col2
from t1
)
)
不漂亮。但似乎工作。 SQLFiddle