MySQL删除重复的行,保留其中一行

示例
有这样一个表

CREATE TABLE `tests` (
 `id` int(11) DEFAULT NULL,
 `name` varchar(20) DEFAULT NULL
) ;

现在需要删除重复name的行,但保留其中一行。

方法一:

保留id小的一行

DELETE n1 FROM tests n1, tests n2 WHERE n1.id > n2.id AND n1.name = n2.name

保留id大的一行

DELETE n1 FROM tests n1, tests n2 WHERE n1.id < n2.id AND n1.name = n2.name

方法二

对于数据量大的表,使用删除的方法可能会很慢,可以使用插入临时表的方法:

INSERT INTO tempTests(id,name)
    SELECT DISTINCT id,name
    FROM tests;

版权声明:著作权归作者所有。

相关推荐

grep显示匹配以及前后的行

如果要指定匹配前后显示的行数,可以使用-B num指定匹配行前几行,以及使用-A num指定匹配行后几行,如:grep -B 3 -A 2 test demo.txt 如果前后行数一样,可以使用-C num指定前后显示的行数:grep -C 3 test demo.tx

bash shell把每行行首的数字移动到行末

可以使用sed和GNU的gawk来实现。示例:123adfdfdsf 234dferere 345rererer 移动后结果为:adfdfdsf123 dferere234 rererer345 sed方法:sed -E 's/^([0-9]+)(.*)/\2\1/' source.txt > target.txt gawk方法:gawk&n

Spark DataFrame join后移除重复的列

在Spark,两个DataFrame做join操作后,会出现重复的列。有两种方法可以用来移除重复的列。方法一:join表达式使用字符串数组(用于join的列)df1.join(df2, Seq("id","name"),"left") 这里DataFrame df1和df2使用了id和name两列来做join,返回的结

JavaScript删除数组里重复的元素

JavaScript里有多种方法可以用来对数组元素去重。ES6 SetES6提供了一个Set对象,用它可以很简单便可以对数组元素去重。function uniq(arr) {    return Array.from(new Set(arr)); } filter另外也可以通过filter来对数组元素去重。functi

Linux批量删除正则匹配的的文件

1、使用find查找匹配的文件find ./ -regex .*\.gz 注意前面的‘.*’,表示查找到的文件带有目录2、使用xargs 传递文件列表参数给rmfind ./ -regex .*\.gz|xargs rm -rf 使用``代替|xargs 管道传递参数rm -rf