微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使 MySQL 8 与包含多个 FROM 表的语句兼容

如何解决如何使 MySQL 8 与包含多个 FROM 表的语句兼容

我正在从 MysqL 5.7 迁移到 8.0,我的一个应用程序在现有 sql 查询上抛出错误,如下所示:

SELECT
       g.*,gp.file_name AS group_picture_fn
FROM groups g,group_picture gp
WHERE
      g.status = 3
  AND g.ID = gp.group_id
ORDER BY
    timestamp desc LIMIT 4

错误

[42000][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 'groups g,group_picture gp WHERE g.status = 3 AND g.ID = gp.group_i' at line 2

查询在旧系统上运行正常。我可以对 MysqL 配置/sql 模式进行任何更改以使其兼容,还是必须以类似 JOIN 的语法重写查询

解决方法

关键字GROUPS是在8.0.2版本中添加的

见:https://dev.mysql.com/doc/refman/8.0/en/keywords.html

问题是您需要对表名和别名进行转义,以便它们不会被视为关键字。

SELECT
       `g`.*,`gp`.`file_name` AS `group_picture_fn`
FROM `groups` `g`,`group_picture` `gp`
WHERE
      `g`.`status` = 3
  AND `g`.`ID` = `gp`.`group_id`
ORDER BY
    `timestamp` desc LIMIT 4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。