我有两个表,table1和table2.Table1与table2有一对多的关系(table1中的一行映射到table2中的许多行).table2中有一个名为code的字段.如果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))
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)