如果第二个表没有匹配项,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
onusers
left-join
onusers
left-join
onusers
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;