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

Ell*_*ott 4 sql join

我有两个表,table1和table2.Table1与table2有一对多的关系(table1中的一行映射到table2中的许多行).table2中有一个名为code的字段.如果table2中的代码值都不等于某组值(比如1,2和3),我想在table1中选择值.我不确定如何写这种联接.
假设table1中的主键被称为id,并且它所映射的外键被称为.你能告诉我如何写这种联接吗?

DVK*_*DVK 7

这被称为反连接.

最简单的实现是:

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

或者,使用外部联接(我不是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
Run Code Online (Sandbox Code Playgroud)