我正在使用
mysql Ver 14.14 Distrib 5.5.35, for debian-linux-gnu (x86_64) using readline 6.2
我的mysql数据库表中有一个情况,其中有重复的记录,奇怪的是这些记录之间有一个额外的空格itemCode。
例如,
mysql> select * from tbl_item;
+--------+-----------------+---------------------------+
| itemId | itemCOde | itemdescription |
+--------+-----------------+---------------------------+
| 1 | 0001 1234567 | Test description data |
| 2 | 0001 1234567 | Test description data |
| 3 | 0120 21113 | dummy data |
| 4 | 0120 21113 | dummy data |
| 5 | 145 78953 | hello world |
| 6 | 487 77787 | testing data |
+--------+-----------------+---------------------------+
通过运行以下查询,我能够找到所有重复记录:
mysql> select itemId, itemCode, itemDescription, count(*) as count from tbl_item Group By itemDescription having count(*) > 1;
+--------+-----------------+---------------------------+-------+
| itemId | itemCode | itemdescription | count |
+--------+-----------------+---------------------------+-------+
| 1 | 0001 1234567 | Test description data | 2 |
| 3 | 0120 21113 | dummy data | 2 |
+--------+-----------------+---------------------------+-------+
但是现在,我该如何删除 itemCode 之间有多余空格的记录。有什么建议吗?
mysql> desc tbl_item;
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| itemID | int(11) | NO | PRI | NULL | auto_increment |
| itemCode | varchar(50) | NO | | NULL | |
| itemDescription | varchar(200) | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
最佳答案
通过此查询,您应该找到这些项目,其中有另一个具有相同描述和更短 itemCode 的条目。
SELECT tbl_item.*
FROM tbl_item
INNER JOIN tbl_item AS t2
ON t2.itemDescription = tbl_item.itemDescription
AND LENGTH(t2.itemCode) < LENGTH(tbl_item.itemCode)
通过此功能,您可以找到所有条目,其中没有其他条目具有相同的描述和更短的 itemCode。好的条目。您可以将此结果插入表副本中,然后重命名。
SELECT tbl_item.*
FROM tbl_item
LEFT JOIN tbl_item AS t2
ON t2.itemDescription = tbl_item.itemDescription
AND LENGTH(t2.itemCode) < LENGTH(tbl_item.itemCode)
WHERE t2.itemId IS NULL
关于mysql - 从数据库表中删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24341808/