【问题标题】:Using Alter and ignore in mysql to remove duplicates在 mysql 中使用 Alter 和 ignore 删除重复项
【发布时间】:2016-10-13 18:57:03
【问题描述】:

我正在使用 MYSQL 并且有一个表“出价”,其中包含重复的条目 我的表架构是

ITEM_CODE   | int(11)     | YES  |     | NULL    |       |
| Max_BidP    | int(11)     | YES  |     | NULL    |       |
| Seller_Name | varchar(45) | YES  |     | NULL    |       |
| Buyer_Name  | varchar(45) | YES  |     | NULL    |       |
| ITEM_NAME   | varchar(45) | YES  |     | NULL    |       |
| Qty         | int(11)     | YES  |     | 1       |       |
+-------------+-------------+------+-----+---------+-------+

表格中的一个条目

16 |       30 | sahraw       | sahraw       | J.K Rowling |    1 |
16 |       30 | sahraw       | sahraw       | J.K Rowling |    1 |

我正在尝试删除重复项,我指定的查询是

ALTER IGNORE TABLE bid ADD UNIQUE INDEX (ITEM_CODE , Max_BidP ,Seller_Name  , Buyer_Name   , ITEM_NAME ,   Qty); 

但它给了我一个错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'IGNORE TABLE bid ADD UNIQUE INDEX (ITEM_CODE , Max_BidP ,Seller_Nam' 附近使用正确的语法

任何我出错的建议。

谢谢

【问题讨论】:

  • 什么版本的mysql?从 5.7.4 开始,“IGNORE”已被删除,可能更早

标签: mysql sql database


【解决方案1】:

请检查您使用的 MySQL 版本。

从 MySQL 5.7.4 开始,删除了 ALTER TABLE 的 IGNORE 子句,并且使用它会产生错误。 http://dev.mysql.com/doc/refman/5.7/en/alter-table.html

【讨论】:

  • 我正在使用 5.7.15。在以后的版本中是否有其他方法可以处理这种重复情况
  • 以后的版本可以先删除重复行再创建索引
  • 如何删除重复行?
  • 这是一种对我有用的方法:mysqltutorial.org/mysql-delete-duplicate-rows(但请注意不要删除所有行)还有什么帮助我意识到 phpMyAdmin 在设置中有一个选项来 en-/禁用没有主键的表的编辑。
【解决方案2】:

如果您使用的是 MySql 5.7.4 或更高版本,IGNORE 将不再可用。见MySQL “ALTER IGNORE TABLE” Error In Syntax

【讨论】:

  • 我使用的是 5.7.15。在以后的版本中是否有其他方法可以处理这种重复情况
猜你喜欢
  • 2013-11-23
  • 2015-02-14
  • 2012-11-18
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多