开发者社区> 问答> 正文

SQL如何查找数据库多栏位重复数据?

首先,我有一个电影数据库,这是其中的一部分:
[rel] movie_id, star_id, time

一般是一个电影,对应多个演出明星。本来相同的movie_id 和 star_id 在数据库中只能出现一次。
可是之前系统设计漏洞,导致重复插入了多项数据:
譬如:
功夫, 周星驰
功夫, 黄圣依
功夫, 周星驰
等于是我们数据库中出现了两个 功夫, 周星驰。

请问各位朋友,有没有可以设计一个sql语句,帮我快速的查找出这些冗余的项和 电影的id。

展开
收起
a123456678 2016-07-01 11:17:20 2651 0
1 条回答
写回答
取消 提交回答
  • screenshot
    保留id最小的记录

    查询重复数据
    select * from TABLE_NAME where (movie_id,star_id) in (select movie_id,star_id from TABLE_NAME group by movie_id,star_id having count() > 1) and id not in (select min(id) from TABLE_NAME group by movie_id,star_id having count()>1)

    删除重复数据
    delete from TABLE_NAME where (movie_id,star_id) in (select movie_id,star_id from TABLE_NAME group by movie_id,star_id having count() > 1) and id not in (select min(id) from TABLE_NAME group by movie_id,star_id having count()>1)

    2019-07-17 19:49:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载