如果第二个表没有匹配项,Mysql将返回零行

如果第二个表没有匹配项,Mysql将返回零行,mysql,sql,Mysql,Sql,我有以下声明: 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; 我希望它返回所有用户及其课程,我还希望它为没有课程的用户返回一行

我有以下声明:

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;

我希望它返回所有用户及其课程,我还希望它为没有课程的用户返回一行。但是,结果仅包含至少有一门课程的用户。我如何让ot返回所有用户,即使他们在
user\u courses
表中没有课程


请注意,当您使用表别名的缩写而不是无意义的字母(如
a
b
时,查询更容易理解。您需要一个
左连接(并将
用户
放在第一位):


请注意,当您使用表别名的缩写而不是无意义的字母(如
a
b
时,查询更容易理解。您需要一个
左连接(并将
用户
放在第一位):


请注意,当您使用表别名的缩写而不是无意义的字母(如
a
b
时,查询更容易理解。您需要一个
左连接(并将
用户
放在第一位):


请注意,当您使用表别名的缩写而不是无意义的字母(如
a
b
left-join
on
users
left-join
on
users
left-join
on
users
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;