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 中存在的记录。
我有一个帖子和用户 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 中存在的记录。