小编典典

SQL连接:如何选择何时值不在一组值中

sql

我有两个表,table1和table2。表1与表2具有一对多关系(表1中的一行映射到表2中的许多行)。table2中有一个称为代码的字段。如果table2中的代码值均不等于某些值集(例如1、2和3),那么我想选择table1中的值。我不确定如何编写这种联接。
假设table1中的主键称为id,而它映射到的外键称为。您能告诉我如何编写这种联接吗?


阅读 152

收藏
2021-05-23

共1个答案

小编典典

这称为反连接

最简单的实现是:

SELECT * FROM table1
WHERE NOT EXISTS (SELECT 1 FROM table2
                  WHERE  table2.did = table1.id
                    AND  table2.code in (1,2,3))

或者,使用外部联接(我不是100%确信这会起作用,因为我自己始终将NOT EXIST语法用于反联接):

SELECT  table1.*
FROM    table1
LEFT OUTER JOIN
        table2
ON      table1.id = table2.did
  AND  table2.code in (1,2,3)
WHERE   table2.did is NULL
2021-05-23