【问题标题】:Cant find mySQL request error找不到 mySQL 请求错误
【发布时间】:2015-06-15 23:03:22
【问题描述】:

可笑,但我在此请求中找不到错误

SELECT * FROM diploms 
LEFT JOIN student ON diploms.student_id = student.student_id 
LEFT JOIN group ON student.group_id = group.group_id
LEFT JOIN speciality ON group.speciality_id = speciality.speciality_id 
ORDER BY (CASE WHEN speciality.name IS NULL THEN 1 ELSE 0 END), speciality.name ASC

但是 SQL 说

#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的“group ON student.group_id = group.group_id LIMIT 0, 30”附近使用正确的语法

WTH?

【问题讨论】:

    标签: mysql sql syntax-error


    【解决方案1】:

    group 是一个reserved keyword in MySQL,需要用反引号转义。

    SELECT * 
    FROM diploms 
    LEFT JOIN student ON diploms.student_id = student.student_id 
    LEFT JOIN `group` ON student.group_id = `group`.group_id
    LEFT JOIN speciality ON `group`.speciality_id = speciality.speciality_id 
    ORDER BY CASE WHEN speciality.name IS NULL THEN 1 ELSE 0 END, 
             speciality.name ASC
    

    【讨论】:

      【解决方案2】:

      将保留关键字用作表或列名是不好的。 group 是保留关键字,这就是给出错误的原因,您可以使用引号倾斜 (`) 将其用作表名。

      另外你不能用它作为列名,见相关帖子:

      group as a column name in insert command

      【讨论】:

        猜你喜欢
        • 2020-01-07
        • 2023-03-22
        • 2023-01-05
        • 2019-05-10
        • 2021-05-08
        • 2020-12-26
        • 2021-10-03
        • 2018-07-10
        • 1970-01-01
        相关资源
        最近更新 更多