我有以下声明:
SELECT
a.user_id AS user_id,
a.user_name AS user_name,
GROUP_CONCAT(b.course_id SEPARATOR ',') AS course_ids
FROM
user_courses b JOIN user a ON b.user_id_id = a.user_id
GROUP BY
a.user_id;
我希望它返回所有用户及其课程,我也希望它为没有课程的用户返回一行。但是,结果仅包含至少有一门课程的用户。即使他们在user_courses
表中没有课程,我如何才能返回所有用户?
答案 0 :(得分:3)
您需要left join
(并先放user
):
SELECT u.user_id, u.user_name,
GROUP_CONCAT(uc.course_id SEPARATOR ',') AS course_ids
FROM user u LEFT JOIN
user_courses uc
ON u.user_id_id = uc.user_id
GROUP BY u.user_id;
请注意,当您使用表别名的缩写而不是a
和b
等无意义的字母时,查询会更容易理解。