选择没有名为foobar的帖子的用户

Syl*_*Syl 0 mysql sql join

我有一张桌子user和一张桌子post.它是一个N-1关系,意味着关系是通过完成的post.user_id.

我想找到没有帖子名为"foobar"的用户.我试过这个:

SELECT `users`.* FROM `users` 
INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id`
WHERE post.title !="foobar"
Run Code Online (Sandbox Code Playgroud)

如果一个用户有一个名为foobar的帖子,则不会返回,但只要有一个名为foobar的帖子,就会返回该用户.

在SQL中我怎么说"我希望没有一个名为foobar的帖子的用户".

xle*_*ier 6

试试:

SELECT *
FROM `users` u
WHERE NOT EXISTS (
    SELECT 1 
    FROM `posts` 
    WHERE title = 'foobar'
    AND user_id = u.id
)
Run Code Online (Sandbox Code Playgroud)