且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从表中删除重复行

更新时间:2023-02-02 20:48:02

是的,假设你有一个唯一的ID字段,你可以删除所有除了ID相同但没有最小ID"的记录为他们的价值观组.

Yes, assuming you have a unique ID field, you can delete all records that are the same except for the ID, but don't have "the minimum ID" for their group of values.

查询示例:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

注意事项:

  • 我随意选择了Table"和ID"作为代表名
  • 字段列表(Field1、Field2、...")应包括除 ID 之外的所有字段
  • 这可能是一个缓慢的查询,具体取决于字段和行的数量,但我希望与替代方案相比它还可以

如果您没有唯一索引,我的建议是简单地添加一个自动增量唯一索引.主要是因为它的设计很好,还因为它可以让你运行上面的查询.

In case you don't have a unique index, my recommendation is to simply add an auto-incremental unique index. Mainly because it's good design, but also because it will allow you to run the query above.