尝试使用DISTINCT和LEFT JOIN获取唯一值时出现MySQL错误
我有两个mysql表,courses和student_courses,我需要从course表中获取唯一的course_名称。但我在执行查询时出错 这是我的问题尝试使用DISTINCT和LEFT JOIN获取唯一值时出现MySQL错误,sql,mysql,Sql,Mysql,我有两个mysql表,courses和student_courses,我需要从course表中获取唯一的course_名称。但我在执行查询时出错 这是我的问题 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
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
这就是我得到的错误
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
从
课程名称为c
在第3行左键加入学生_课程
SELECT
DISTINCT sc.c_id,
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
DISTINCT关键字必须是select之后的第一个单词,因为它将应用于整行。就好像你说:
SELECT DISTINCT(sc.c_id, c.course_name, ...) FROM ...
你不能说:
SELECT sc.c_id, DISTINCT(c.course_name, ...) FROM ...
DISTINCT
是一个在选择后立即使用的关键字(请查看)。您不能区分选择列,而是执行selectdistinct
查询。您可能需要的是一个分组依据
。但是,您需要一个使用as-aggregate函数的示例(告诉mysql如何处理其他列—您不是GROUP
ingBY
)(它只是使用逗号连接每个组中的所有列):
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