Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用DISTINCT和LEFT JOIN获取唯一值时出现MySQL错误_Sql_Mysql - Fatal编程技术网

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

尝试使用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

我有两个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
        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
ing
BY
)(它只是使用逗号连接每个组中的所有列):

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