找到sql join失败的值

chr*_*l89 6 mysql sql database

说我有一个查询,例如:

SELECT *
FROM Table_1
JOIN Table_2
ON Table_1.Col_1 = Table_2.Col_1
Run Code Online (Sandbox Code Playgroud)

所以我有100条记录,其中98条是相同的,所以查询将打印出98条中的98条.如何让SQL打印出未能满足连接的2?

Rom*_*ain 9

使用LEFT JOIN:

SELECT *
FROM Table_1
LEFT JOIN Table_2 ON (Table_1.Col_1 = Table_2.Col_1)
Run Code Online (Sandbox Code Playgroud)

如果子句Table_2不匹配,则字段为NULL ON.然后,您将能够添加一个WHERE TABLE_2.Col_1 IS NULL仅保留Table_1没有匹配的记录Table_2.


Mat*_*lie 7

LEFT JOIN的替代方法是使用EXISTS.

SELECT * FROM Table_1
WHERE NOT EXISTS (SELECT * FROM Table_2 WHERE Col_1 = Table_1.Col_1)
Run Code Online (Sandbox Code Playgroud)