首页 > 解决方案 > mysql插入查询在语法上是正确的,但显示错误

问题描述

INSERT INTO AlbumSongs (albumId,songId,rank) VALUES ("a3092aee5d397fef823656c31cd131e0","DPEUD1tm1RWp",9)

我试图在我的 mysql 数据库中执行这个查询。但它显示了这个错误#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 'rank) VALUES ("a3092aee5d397fef823656c31cd131e0","DPEUD1tm1RWp",9)' at line 1

我的mysql服务器版本```Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))``

这个查询有什么问题?我该如何解决这个问题?

标签: mysql

解决方案


rank是 MySQL 中的一个函数,因此查询引擎期望看到如下内容:

RANK() OVER (PARTITION BY {column} ORDER BY {column})

如果您确实必须为列使用此名称,请考虑将所有列名放在反引号中,如下所示:

INSERT INTO `AlbumSongs` (`albumId`, `songId`, `rank`)
VALUES ('a3092aee5d397fef823656c31cd131e0', 'DPEUD1tm1RWp', 9);

注意:表名也可以用同样的方式换行,字符串是单引号而不是双引号。

理想情况下,在编写查询时,所有表名和列名都应该这样定义。


推荐阅读