0

我有 2 个表,Table1 和 Table2,两个表中的 2 列是相同的

更新:Table1.col1 的类型与 Table2.col1 相同,Table1.col2 与 Table2.col2 相同

试图获取 table1.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)

想知道更好的方法还是正确的?

4

3 回答 3

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

于 2013-06-05T14:12:22.597 回答
2

使用左连接:

SELECT Table1.* 
FROM Table1 
LEFT JOIN Table2
  ON Table1.col1 = Table2.col1
  AND Table1.col2 = Table2.col2
WHERE Table2.col1 IS NULL
于 2013-06-05T14:09:32.140 回答
0

如果此查询有任何问题,请发表评论:

select * from table1
where not exists (select 1 from table2 where table2.col1 = table1.col1 and table2.col2 = table1.col2)
于 2013-06-05T14:24:24.067 回答