我有一个users
列,其中id
列和posts
表格的列数为user_id
。
我希望找到所有从未发布的用户。
伪代码:
SELECT u.* FROM users u
JOIN posts p
WHERE u.id IS NEVER IN p.user_id
我认为我在这里遗漏了一些简单而无法找到答案的东西。感谢您的任何帮助,您可以提供。
答案 0 :(得分:4)
使用LEFT JOIN
:
SELECT u.*
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
WHERE p.user_id is null;
即使他们没有发布任何帖子, LEFT JOIN
也会向您提供这些用户,这些用户的p.user_id
等于null。因此,添加WHERE p.user_id is null
将为您提供从未发布任何帖子的用户。
答案 1 :(得分:1)
你可以试试这个 -
SELECT u.* FROM users u
where u.id not in (select p.user_id from posts p);
答案 2 :(得分:1)
这是你的解决方案:
SELECT u.* FROM users u WHERE u.id NOT IN (SELECT p.user_id FROM posts p)
有些解释,检查不在帖子中的用户的用户ID。
答案 3 :(得分:1)
你可以使用NOT IN和subselect
SELECT u.*
FROM users u
where u.id NOT IN (
select user_id
from posts
)
答案 4 :(得分:1)
尝试在
中使用Notprops.index