我想删除除 id
之外所有列中具有相同值的所有行(id
最低的行除外)。
鉴于此数据:
id year file name language download
1 2014 a x h d
2 2014 a c i d
3 2014 a x h d
4 2014 a x h d
5 2015 b y j d
6 2015 b y j d
7 2015 b y j d
这里我想删除 3 和 4(留下 1 - 最低的 id),并删除 6、7(留下 5)。
“匹配”表示两行具有相同的“年份”、"file"、“名称”、“语言”和“下载”。
可能有超过 10 个重复行。我想删除所有行,但保留最低 id 行。
最佳答案
使用 mysql 的多表删除语法和自连接:
delete b
from mytable a, mytable b
where b.year = a.year
and b.file = a.file
and b.name = a.name
and b.language = a.language
and b.download = a.download
and b.id > a.id -- this condition picks the higher id(s) for deletion
这应该表现得很好,因为它本质上是一个单一的连接。
关于mysql - 删除mysql中的重复行,仅保留具有最低id的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38667570/