mysql - 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))``
这个查询有什么问题?我该如何解决这个问题?
解决方案
rank
是 MySQL 中的一个函数,因此查询引擎期望看到如下内容:
RANK() OVER (PARTITION BY {column} ORDER BY {column})
如果您确实必须为列使用此名称,请考虑将所有列名放在反引号中,如下所示:
INSERT INTO `AlbumSongs` (`albumId`, `songId`, `rank`)
VALUES ('a3092aee5d397fef823656c31cd131e0', 'DPEUD1tm1RWp', 9);
注意:表名也可以用同样的方式换行,字符串是单引号而不是双引号。
理想情况下,在编写查询时,所有表名和列名都应该这样定义。
推荐阅读
- javascript - 请求表时发生错误:错误:在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1117:14) 处连接 ETIMEDOUT 52.166.80.90:443
- php - 通过匹配键组合 2 个数组
- javascript - Visual Studio Code 如何仅对更改的文件进行 lint?
- asp.net-core - IBM DB2 Core:ASP.NET Core 2.1 和 Microsoft Enterprise Libraries 的连接字符串
- java - TabPane - 为什么我不能更改空选项卡区域的颜色?
- r - 可以像 Python 中的 *args 一样在 R 中迭代省略号吗?
- r - R-瀑布图
- c++ - GCC 和 -Wconversion
- c# - Winforms:布尔逻辑无法正常工作
- mysql - 如何在 MySQL 上循环表行并获取表头 - 值对