首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL [1064] [42000]:在mysql 8上使用时,您的SQL语法出现了错误

SQL [1064] [42000]:在mysql 8上使用时,您的SQL语法出现了错误
EN

Stack Overflow用户
提问于 2021-12-02 19:03:45
回答 1查看 374关注 0票数 0

这个版本适用于较早的mysql版本,但这个查询的好处是它将删除重复项和相同时间的添加索引,如何在mysql 8商业版中这样做?

代码语言:javascript
运行
复制
ALTER IGNORE TABLE tablex
ADD UNIQUE INDEX id_rmd (field1,field12, field3);

SQL错误1064:您的SQL语法出现错误;请检查与MySQL服务器版本对应的手册,以获得使用“忽略表”的正确语法.

我如何在mysql 8广告中做同样的事情。即在创建索引的同时删除重复

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-02 19:09:58

商业或非商业并没有什么区别。INSERT IGNORE在5.6中被否决,5.7被删除:

https://dev.mysql.com/doc/refman/5.6/en/alter-table.html

忽略是标准SQL的MySQL扩展。它控制ALTER的工作方式,如果新表中的唯一键上有重复项,或者启用严格模式时会出现警告。如果未指定忽略,则在发生重复键错误时,该副本将被中止并回滚.如果指定了“忽略”,则只有一行用于唯一键上有重复项的行。其他冲突的行将被删除。不正确的值被截断到最接近匹配的可接受值。

从MySQL 5.6.17开始,忽略子句被废弃,它的使用将生成一个警告。忽略在MySQL 5.7中被删除。

您只需重命名并复制表(未经测试):

代码语言:javascript
运行
复制
create tablex_new like tablex;
ALTER TABLE tablex_new
ADD UNIQUE INDEX id_rmd (field1,field12, field3);
insert ignore into tablex_new select * from tablex;
rename table tablex to tablex_old, tablex_new to tablex;
-- after verifying success
drop table tablex_old;

(请注意,在insert ignore启动和重命名完成之间发生的任何插入/更新/删除都将丢失。)

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

https://stackoverflow.com/questions/70205129

复制
相关文章

相似问题

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