mysql 多表 找出重复项,在MySQL的同一张表中查找重复项

我有一个包含两列的表格-艺术家,release_id

我可以运行哪个查询来显示重复记录?

例如 我的桌子是

ArtistX : 45677

ArtistY : 378798

ArtistX : 45677

ArtistZ : 123456

ArtistY : 888888

ArtistX : 2312

ArtistY: 378798

查询应显示

ArtistX : 45677

ArtistX : 45677

ArtistY : 378798

ArtistY : 378798

您可以在感兴趣的列之间使用分组来计算是否存在重复项。

SELECT

artist, release_id, count(*) no_of_records

FROM table

GROUP BY artist, release_id

HAVING count(*) > 1;

SELECT id,artist,COUNT(*) FROM myTable

GROUP BY artist, release_id HAVING COUNT(*) > 1

选择

艺术家,release_id,count(*)no_of_records,group_concat(id)

从表

GROUP BY艺术家,release_id

计数(*)> 1;

还添加group_concat(id)可以获得重复项的所有ID。

你可以尝试这样的事情

将输出

artist   count(*)

45677    2

378798   2

从艺术家IN的表中选择*(通过count(ID)> 1的艺术家从表组中选择艺术家)和release_id IN(通过count(release_id)> 1的release_id从表组中选择release_id);

将提取:

艺术家X:45677

艺术家X:45677

艺术家Y:378798

艺术家Y:378798

您可以将此查询用于相同的结果。这个对我有用

SELECT名字,姓氏,列表。地址FROM列表

INNER JOIN(从列表中选择地址

GROUP BY地址具有count(id)> 1)dup ON list.address = dup.address

此方法可能不适合您,但是如果您想摆脱重复项并在确保重复项的同时执行此操作,则可以尝试以下操作:

将您的table1复制到table2中,例如:

CREATE TABLE table2 AS SELECT * FROM table1;

在table1中添加新列,例如将其命名为kount

运行查询(假定release_id应该是唯一列):

更新table1 AS t1 SET t1.kount =(从table2 AS t2 WHERE t1.release_id = t2.release_id中选择COUNT(*)

放置表table2

使用table1 .kount查找重复项并删除重复项或其他内容。最好在PHP / Python / Perl中。例如,通过这种方式,您可以确保它们确实是重复项,并且具有相同的release_id。相同的release_id可能是偶然产生的,标题,发布年份等可能有所不同。因此,只需将您的代码放在此处即可过滤重复项(伪代码):

foreach(sql(SELECT * FROM table1 WHERE kount> 1))做

//做一点事

尝试这个:

SELECT A.ARTIST,A.RELEASE_ID FROM ARTISTS A

WHERE EXISTS(

SELECT 'X' FROM ARTISTS B

WHERE B.ARTIST = A.ARTIST AND B.RELEASE_ID = A.RELEASE_ID

GROUP BY B.ARTIST,B.RELEASE_ID

HAVING COUNT(B.ARTIST)>1)

ORDER BY A.ARTIST;

如果一行中有更多唯一列,则可以使用以下方法:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值