如何创建一个SQL命令来删除表中的所有行,其中我有两个或更多具有相同值的特定列,但我仍然没有丢失该行,只有重复项?
例如:
Id value1 value2
1 71 5
2 8 8
3 8 8
4 8 8
5 23 26
Id2,Id3和Id4具有相同的value1
和value2
。
我需要删除所有重复的行,如(Id3和Id4)或(Id2和Id4)或(Id2和Id3)
答案 0 :(得分:2)
delete t
from table1 t
inner join table1 t2
on t.id>t2.id and t.value1=t2.value1 and t.value2=t2.value2
答案 1 :(得分:0)
由于MySQL允许在查询中使用未分组的字段:
CREATE TEMPORARY TABLE ids AS
(SELECT id
FROM your_table
GROUP BY value1, value2);
DELETE FROM your_table
WHERE id NOT IN (SELECT id FROM ids);
答案 2 :(得分:0)
您可以做的是通过以下方式将不同记录复制到新表中:
select distinct * into NewTable from MyTable