我有一些这样的用户数据
id | username | email
1 | test | test@test.com
2 | om | test2@test2.com
3 | aa | test3@test3.com
Run Code Online (Sandbox Code Playgroud)
我有这样的数据用户生物数据
id | username | bio
1 | test | test
2 | om | test2
Run Code Online (Sandbox Code Playgroud)
所以,我想使用 not in 与内连接来显示数据where user.username not in biodata.username,我尝试这样做,但这是错误的
select user.*, biodata.* from user inner join biodata on user.username = biodata.username where user.username not in biodata.username;
Run Code Online (Sandbox Code Playgroud)
那么,如何使用它呢?
这需要共同的LEFT JOIN ... IS NULL 模式。
SELECT u.id, u.username, u.email
FROM user u
LEFT JOIN biodata b ON u.username = b.username
WHERE b.id IS NULL
Run Code Online (Sandbox Code Playgroud)
该LEFT JOIN操作保留 中的所有行user,无论它们在 中是否有匹配项biodata。(相比之下,普通操作JOIN会抑制user不具有匹配项的行。)该操作会过滤掉具有b.id IS NULL匹配项的行。