首页 > 解决方案 > 使用多列连接

问题描述

如何使用 JOIN 执行以下操作:

Select
     id_pk, col1, col2,col
From table1 A
Where NOT EXISTS
  (select 1 from table2 B
    Where A.id_pk = B.id_pk
       and A.col1 = B.col1
       and A.col2 = B.col2
  );

标签: joinmultiple-columns

解决方案


这里不能简单地使用join查询,因为我们知道两张表共享主键id_pk,我们可以获取满足条件的记录的主键A.id_pk = B.id_pk(Equi-join),A.col1 = B.col1A.col2 = B.col2。并且我们可以使用这组主键来获取那些主键不匹配的记录NOT IN。在这种情况下,连接查询作为子查询给出。

询问:

SELECT
    id_pk, col1, col2, col
FROM table1 
WHERE id_pk NOT IN (
    SELECT A.id_pk
    FROM table1 A, table2 B
    WHERE A.id_pk = B.id_pk
    AND A.col1 = B.col1
    AND A.col2 = B.col2
);

推荐阅读