尝试使用DISTINCT和LEFT JOIN获取唯一值时出现MySQL错误

Rol*_*and 2 mysql sql

我有两个mysql表,课程和student_courses,我需要从课程表中获取唯一的course_names.但是在尝试执行查询时我得到了一个错误.

继承人我的疑问

        SELECT
            sc.c_id,
            DISTINCT c.course_name
        FROM
            Courses AS c
        LEFT JOIN Student_Courses AS sc ON c.c_id = sc.c_id
        WHERE
            sc.s_id = 4
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT c.course_name
Run Code Online (Sandbox Code Playgroud)

来自课程AS C LEFT JOIN Student_Courses AS'在第3行

sou*_*rge 6

DISTINCT是一个紧接着使用的关键字SELECT(看看Mysql SELECT语法).您无法区别地选择列,而是进行SELECT DISTINCT查询.你可能想要的是一个GROUP BY.但你需要一个聚合函数 - (你是不是那些来告诉MySQL做什么用其他列GROUP荷兰国际集团BY使用实例.) GROUP_CONCAT:作为聚合函数(这只是串接各组用逗号所有列)

SELECT c.course_name, GROUP_CONCAT(sc.c_id),
FROM Courses AS c
LEFT JOIN Student_Courses AS sc ON c.c_id = sc.c_id
WHERE sc.s_id = 4
GROUP BY course_name
Run Code Online (Sandbox Code Playgroud)