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