我如何删除mysql中的重复行,以保留已填充其他字段的行?
我有一个表格,格式如下: 姓名、电话、月份、年份 2018年1月22日 bbb uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu_____________ aaa uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu___________ 在这里,我想检查重复的电话条目,并删除所有条目,除了填写月份和年份字段的条目 由于我对加入查询不是很在行,因此非常感谢您的帮助。。我发现了类似的问题,但用这个问题,我无法保留已填写其他文件的问题 如果有人能帮忙,请提前感谢。为什么不这样做呢我如何删除mysql中的重复行,以保留已填充其他字段的行?,mysql,sql,Mysql,Sql,我有一个表格,格式如下: 姓名、电话、月份、年份 2018年1月22日 bbb uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu_____________ aaa uuuuuuuuuuu2222 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
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