sql join与可空数据

时间:2017-07-09 17:46:49

标签: sql join one-to-many

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

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`

enter image description here

1 个答案:

答案 0 :(得分:1)

在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

左连接将包括用户表中的所有项目以及仅存在的posts表中的记录。