gpt4 book ai didi

php - 清理冗余数据的数据库

转载 作者:行者123 更新时间:2023-11-29 01:09:03 25 4
gpt4 key购买 nike

locid   country city
39409 US Aaronsburg
128426 US Aaronsburg
340356 US Aaronsburg
429373 US Aaronsburg
422717 US Abbeville
431344 US Abbeville
433062 US Abbeville
341726 US Abbeville
421248 US Abbeville
40779 US Abbeville
326718 US Abbeville
317654 US Abbeville
16707 US Abbeville
25771 US Abbeville
120301 US Abbeville
132115 US Abbeville
121770 US Abbeville
130397 US Abbeville
5585 US Abbeville
10227 US Abbeville
190173 US Abbeville
491120 US Abbeville
311174 US Abbeville
306532 US Abbeville
164271 US Abbot
465218 US Abbot
58452 US Abbotsford
359399 US Abbotsford
309116 US Abbotsford
8169 US Abbotsford

谁能给我一个sql查询来帮我清理这张表?清理后 locid(索引)应该被重置,顺便说一句,这是一个使用此查询的县城 SELECT locid, country, city FROM location WHERE country = 'US' ORDER BY city ASC。当我通过 phpmyadmin 的导入多次导入一个 sql 文本时出现了这个冗余数据,这就是结果,

最佳答案

在表位置添加唯一索引,这样就不会插入重复记录

ALTER IGNORE TABLE location ADD UNIQUE KEY ix1(country, city);

这会自动从表中删除重复记录,对于以后的插入查询,您需要使用 INSERT IGNORE 子句以避免出现重复错误。

但正如 @AD7six 在评论中所建议的那样,它可能不适用于 MySQL 版本 5.1.41,5.5.1-m2, 6.0:参见错误 here

或使用 DELETE 查询删除重复项的替代安全方法:

DELETE a
FROM location a
LEFT JOIN (
SELECT locid
FROM location
GROUP BY country, city
)b
ON a.locid = b.locid
WHERE b.locid IS NULL;

要重新设置 auto_incrementlocid 的值,您只需将 primary key 放在 locid 上并重新创建它:

ALTER TABLE location DROP column locid;
ALTER TABLE location
ADD COLUMN locid INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

或使用 UPDATE 查询重新设置 locid 值的替代方法:

SET var_locid = 0;

UPDATE location
SET locid = (@var_locid := @var_locid + 1)
ORDER BY locid ASC;

关于php - 清理冗余数据的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11557757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com