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

时间:2017-11-21 03:59:44

标签: mysql sql

我有一个表格格式:

NAME__TELEPHONE__MONTH ___ YEAR

AAA ______ 2222 _________一月______ 2018

bbb ______ 2222________ _____________

aaa ______ 2222___________ ___________

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

由于我在加入查询方面不是很好,所以对任何帮助表示赞赏。我发现了类似的问题,但是使用它我无法保留已填写其他文件的问题。

如果有人可以提供帮助,请提前谢谢。

3 个答案:

答案 0 :(得分:1)

我发现最好的答案不是删除,只是转移到其他表,更快,更不危险,像这样:

INSERT INTO tempTableName(id,name,telephone,month,year)     SELECT DISTINCT id,姓名,电话,月份,年份     FROM tableName;

希望它有效!

答案 1 :(得分:0)

为什么不这样做?

y

答案 2 :(得分:0)

试试这个:

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