首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新MySQL v8中的多行

问更新MySQL v8中的多行
EN

Stack Overflow用户
提问于 2021-08-05 03:02:09
回答 1查看 159关注 0票数 1

在这些具有7 - 12年历史的问题中,最不正确的答案建议使用MySQL VALUES函数更新多行:

代码语言:javascript
复制
INSERT INTO chart (id, flag)
VALUES (1, 'FLAG_1'),(2, 'FLAG_2')
ON DUPLICATE KEY UPDATE id = VALUES(id), flag = VALUES(flag);

当我尝试使用MySQL版本8.0.20时,我收到了一个弃用警告

HY000 'VALUES函数‘被废弃,并将在以后的发行版中删除。请使用别名(插入.价值(.)(作为别名)和用alias.col替换ON重复键更新子句中的值(Col)

MySQL工作日志建议使用别名代替。在‘'INSERT .关于重复键更新语句’文档中也提到了

代码语言:javascript
复制
INSERT INTO chart (id, flag) 
VALUES (1, 'FLAG_1'),(2, 'FLAG_2') AS aliased
ON DUPLICATE KEY UPDATE flag=aliased.flag;

然而,尝试这种新语法时,我得到了一个错误:

42000您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得在第3行使用的正确语法。

使用mysql命令行工具,我可以用新的别名语法很好地更新表。为什么我不能在我常用的数据库工具()中这样做呢?

如何更新MySQL v8.0.20及更高版本中的多行,而无需警告和错误?

EN

回答 1

Stack Overflow用户

发布于 2021-08-05 03:02:09

问题中的新别名语法是正确的:

代码语言:javascript
复制
INSERT INTO chart (id, flag) 
VALUES (1, 'FLAG_1'),(2, 'FLAG_2') AS aliased
ON DUPLICATE KEY UPDATE flag=aliased.flag;

还请确保:

  • MySQL v8.0.20或更高版本
  • 您的MySQL连接器驱动程序支持MySQL v8.0.20及更高版本的特性

使用我的数据库工具的MySQL连接器驱动程序是导致错误的罪魁祸首。它被设置成一个旧版本。

您可以这样更新您的MySQL连接驱动程序:

右键单击数据库视图>数据源属性>底部的数据库连接,应该建议将驱动程序切换到8.0.20版本:

​

​

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68660109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档