• 售前

  • 售后

热门帖子
入门百科

Mysql一些复杂的sql语句(查询与删除重复的行)

[复制链接]
散漫竹子 显示全部楼层 发表于 2021-10-25 19:33:21 |阅读模式 打印 上一主题 下一主题
1.查找重复的行
  1. SELECT * FROM blog_user_relation a WHERE (a.account_instance_id,a.follow_account_instance_id)
  2. IN (SELECT account_instance_id,follow_account_instance_id FROM blog_user_relation GROUP BY account_instance_id, follow_account_instance_id HAVING
  3. COUNT(*) > 1)
复制代码
2.删除重复的行(保留一条)
PS:因为mysql的delete,如果被删的表的where条件里有in,且in内里也有此表,那就删除不了。
  1. /*创建个临时表*/
  2. CREATE TABLE blog_user_relation_temp AS
  3. (
  4. SELECT * FROM blog_user_relation a WHERE
  5. (a.account_instance_id,a.follow_account_instance_id)
  6. IN ( SELECT account_instance_id,follow_account_instance_id FROM blog_user_relation GROUP BY account_instance_id, follow_account_instance_id HAVING COUNT(*) > 1)
  7. AND
  8. relation_id
  9. NOT IN (SELECT MIN(relation_id) FROM blog_user_relation GROUP BY account_instance_id, follow_account_instance_id HAVING COUNT(*)>1));
  10. /*删除数据*/
  11. DELETE FROM `blog_user_relation` WHERE relation_id IN (SELECT relation_id FROM blog_user_relation_temp);
  12. /*删除临时表*/
  13. DROP TABLE blog_user_relation_temp;
复制代码

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作