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

 更新时间:2017年05月20日 12:45:46   投稿:mdxy-dxy   我要评论

这篇文章主要介绍了Mysql一些复杂的sql语句(查询与删除重复的行),需要的朋友可以参考下

1.查找重复的行

SELECT * FROM blog_user_relation a WHERE (a.account_instance_id,a.follow_account_instance_id) 
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)

2.删除重复的行(保留一条)

PS:因为mysql的delete,如果被删的表的where条件里有in,且in里面也有此表,那就删除不了。

/*创建个临时表*/
CREATE TABLE blog_user_relation_temp AS
(
 SELECT * FROM blog_user_relation a WHERE 
 (a.account_instance_id,a.follow_account_instance_id) 
 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)
 AND 
 relation_id 
 NOT IN (SELECT MIN(relation_id) FROM blog_user_relation GROUP BY account_instance_id, follow_account_instance_id HAVING COUNT(*)>1));

/*删除数据*/
DELETE FROM `blog_user_relation` WHERE relation_id IN (SELECT relation_id FROM blog_user_relation_temp);

/*删除临时表*/
DROP TABLE blog_user_relation_temp;

相关文章

  • MySQL学习笔记之创建、删除、修改表的方法

    MySQL学习笔记之创建、删除、修改表的方法

    这篇文章主要介绍了MySQL学习笔记之创建、删除、修改表的方法,结合实例分析了mysql创建表、增加,修改及删除列、查看表结构、删除表等基本语法与使用技巧,需要的朋友可以参考下
    2016-09-09
  • Java连接MySql的详细介绍

    Java连接MySql的详细介绍

    本篇文章主要是对Java连接MySql的详细介绍。需要的朋友参考下
    2013-04-04
  • MySQL笔记之基本查询的应用详解

    MySQL笔记之基本查询的应用详解

    本篇文章介绍了,在mysql中基本查询的应用详解。需要的朋友参考下
    2013-05-05
  • 解析如何加快mysql编译的速度

    解析如何加快mysql编译的速度

    本篇文章是对如何加快mysql编译的速度进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • CentOS 7.2下MySQL的安装与相关配置

    CentOS 7.2下MySQL的安装与相关配置

    最近因为工作需要,要在CentOS上安装MySQL,在安装的时候遇到了一点问题,花了点时间解决了,感觉不管是官网还是网上的一些教程都不够完整,不能一次性帮新手解决问题,于是我就结合官网和网上的资源整理了下,现在分享给大家,希望对有需要的朋友们能有所帮助。
    2016-11-11
  • Mysql存储引擎InnoDB和Myisam的六大区别

    Mysql存储引擎InnoDB和Myisam的六大区别

    这篇文章主要介绍了Mysql存储引擎InnoDB和Myisam的六大区别,本文从构成上、事务处理、SQL操作、自动ID、表行数等方面讲解了它的区别,需要的朋友可以参考下
    2015-02-02
  • 简单谈谈MySQL优化利器-慢查询

    简单谈谈MySQL优化利器-慢查询

    分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”
    2017-01-01
  • MySQL建立唯一索引实现插入重复自动更新

    MySQL建立唯一索引实现插入重复自动更新

    这篇文章给大家分享的是当向数据插入数据时,判断字段是不是存在,存在执行更新操作,如果不存在就执行插入操作的方法,有需要的朋友们可以参考借鉴。
    2016-09-09
  • Table ‘xxx’ is marked as crashed and should be repaired 错误解决方法参考

    Table ‘xxx’ is marked as crashed and should be repaired 错

    这些东西都是从其他地方找来的一些解决MYSQL数据库这个错误的方法,并不一定适用于神迹数据库,仅仅供参考一下,具体的解决方法还是需要摸索。
    2009-04-04
  • mysql 设置默认的时间值

    mysql 设置默认的时间值

    由于MySQL目前字段的默认值不支持函数
    2009-05-05

最新评论