gpt4 book ai didi

sql - 通过 SQL 删除重复条目?

转载 作者:行者123 更新时间:2023-12-04 22:52:44 28 4
gpt4 key购买 nike

SQL 中是否有可能删除(仅一个)组合列的重复条目(此处:city、zip)?所以如果我有这个 SQL:

INSERT INTO foo (id, city, zip) VALUES (1, 'New York', '00000')
INSERT INTO foo (id, city, zip) VALUES (2, 'New York', '00000')

我可以稍后用 sql 语句删除第一个吗?我的方法对此不起作用
DELETE FROM foo (id, city, zip) 
WHERE id IN
(SELECT id FROM foo GROUP BY id HAVING (COUNT(zip) > 1))

最佳答案

改编自 this article .这两个解决方案是通用的,应该适用于任何合理的 SQL 实现。

就地删除重复项:

DELETE T1
FROM foo T1, foo T2
WHERE (T1.city = T2.city AND foo1.zip=foo2.zip) -- Duplicate rows
AND T1.id > T2.id; -- Delete the one with higher id

简单,对于小表或几乎没有重复的表应该可以正常工作。

将不同的记录复制到另一个表:
CREATE TABLE foo_temp LIKE(foo);
INSERT INTO foo_temp (SELECT distinct city, zip) FORM foo;
TRUNCATE TABLE foo;

如果您有幸拥有一个序列作为您的 id,只需:
INSERT INTO foo SELECT * FROM foo_temp;
DROP TABLE foo_temp;

有点复杂,但对于具有大量重复项的非常大的表非常有效。对于这些,为 (city, zip) 创建索引将极大地提高查询性能。

关于sql - 通过 SQL 删除重复条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161590/

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