我有两个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行
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)