Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何删除mysql中的重复行,以保留已填充其他字段的行?_Mysql_Sql - Fatal编程技术网

我如何删除mysql中的重复行,以保留已填充其他字段的行?

我如何删除mysql中的重复行,以保留已填充其他字段的行?,mysql,sql,Mysql,Sql,我有一个表格,格式如下: 姓名、电话、月份、年份 2018年1月22日 bbb uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu_____________ aaa uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

我有一个表格,格式如下:

姓名、电话、月份、年份

2018年1月22日

bbb uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu_____________

aaa uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu___________

在这里,我想检查重复的电话条目,并删除所有条目,除了填写月份和年份字段的条目

由于我对加入查询不是很在行,因此非常感谢您的帮助。。我发现了类似的问题,但用这个问题,我无法保留已填写其他文件的问题

如果有人能帮忙,请提前感谢。

为什么不这样做呢

delete t from table t
    where month is null and year is null;

我发现最好的答案不是删除,而是移动到另一个表,速度更快,危险性更小,如下所示:

插入姓名(id、姓名、电话、月份、年份) 选择不同的id、姓名、电话、月份、年份 从表名开始

希望它能起作用

试试这个:

delete from table t
inner join 

(select name,Telephone ,row_number() over (partition by name,Telephone order by month,year ) RN
from table 
) temp 
on t.name = temp.name and 
   t.Telephone = temp.Telephone
where RN > 1 

这个可能的重复可以和@Gordon LinoffI mean的另一个答案连接起来,带WHERE