sql 加入可为空的数据

sql join with nullable data

我有一个帖子和用户 table,我希望下面的代码将 return 一个带有 post_count 列的 table,如果用户有 0帖子它应该仍然说 0,但是下面的代码不会 return 所有用户,只有那些有帖子的用户。

SELECT users.*, COUNT(posts.id) post_count 
FROM `posts` 
JOIN  `users` ON `posts`.`user_id` = `users`.`id` 
GROUP BY(posts.user_id) 
ORDER BY `users`.`id`

在 sql 中,您需要为此使用左连接:

SELECT users.*, COUNT(posts.user_id) post_count 
FROM users 
LEFT JOIN  posts ON posts.user_id = users.id 
GROUP BY(users.id) 
ORDER BY users.id

左联接将包括用户 table 中的所有项目,并且仅包括帖子 table 中存在的记录。