我有2个表,Table1和Table2,其中两个表中的2列相同
更新:Table2.col1的类型与Table2.col1相同,Table1.col2与Table2.col2相同
尝试获取table2.col1不在table2.col1和table1.col2中而不在table2.col2中的数据,这是我的查询。
select * from Table1
where Table1.col1 not in (select Table2.col1 from Table2)
and Table1.col2 not in (select Table2.col2 from Table2)
想知道更好的方法还是这是正确的?
答案 0 :(得分:2)
使用LEFT JOIN:
SELECT Table1.*
FROM Table1
LEFT JOIN Table2
ON Table1.col1 = Table2.col1
AND Table1.col2 = Table2.col2
WHERE Table2.col1 IS NULL
答案 1 :(得分:2)
此查询应该完成这项工作,我根据您的查询运行了一个简单的测试,但它没有产生所需的结果
SELECT *
FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.col1 = t2.col1 AND t1.col2 = t2.col2
WHERE t2.col1 IS NULL AND t2.col2 IS NULL
鉴于此
CREATE TABLE Table1
(
colA VarChar(50),
col1 Int,
col2 Int
)
CREATE TABLE Table2
(
colB VarChar(50),
col1 Int,
col2 Int
)
INSERT Table1
VALUES ('A', 1, 1),
('B', 1, 2),
('C', 2, 1)
INSERT Table2
VALUES ('X', 1, 1),
('Y', 2, 1),
('Z', 2, 2)
如果我理解你的问题,我们应该得到 B | 1 | 2 强>
答案 2 :(得分:0)
如果此查询有任何问题,请发表评论:
select * from table1
where not exists (select 1 from table2 where table2.col1 = table1.col1 and table2.col2 = table1.col2)