加唯一索引时候发现已有重复数据删除

简介: 加唯一索引时候发现已有重复数据删除

说话随便的人,便是没有责任心。——哈代

sql如下

-- 查询重复数据id
SELECT
  GROUP_CONCAT( id SEPARATOR ',' )
FROM
  `my_table` 
GROUP BY
  `user_id`,
  `depart_id`,
  `position_id` 
HAVING
  COUNT(*) > 1 
  AND `user_id` IS NOT NULL
  AND `depart_id` IS NOT NULL
  AND `position_id` IS NOT NULL;
-- 查询需要删除掉的重复数据
SELECT
  t1.`id`,
  t1.`user_id`,
  t1.`depart_id`,
  t1.`position_id`,
  t1.`gmt_create` 
FROM
  my_table t1
  INNER JOIN (
  SELECT
    user_id,
    depart_id,
    position_id,
    MAX( gmt_create ) AS latest_gmt_create,
    MAX( id ) AS latest_id 
  FROM
    my_table 
  WHERE
    user_id IS NOT NULL 
    AND depart_id IS NOT NULL 
    AND position_id IS NOT NULL 
  GROUP BY
    user_id,
    depart_id,
    position_id 
  HAVING
    COUNT(*) > 1 
  ) t2 ON t1.user_id = t2.user_id 
  AND t1.depart_id = t2.depart_id 
  AND t1.position_id = t2.position_id 
  AND ( t1.gmt_create < t2.latest_gmt_create OR t1.id < t2.latest_id );
-- 改为删除sql,执行删除
DELETE
  t1
FROM
  my_table t1
  INNER JOIN (
  SELECT
    user_id,
    depart_id,
    position_id,
    MAX( gmt_create ) AS latest_gmt_create,
    MAX( id ) AS latest_id 
  FROM
    my_table 
  WHERE
    user_id IS NOT NULL 
    AND depart_id IS NOT NULL 
    AND position_id IS NOT NULL 
  GROUP BY
    user_id,
    depart_id,
    position_id 
  HAVING
    COUNT(*) > 1 
  ) t2 ON t1.user_id = t2.user_id 
  AND t1.depart_id = t2.depart_id 
  AND t1.position_id = t2.position_id 
  AND ( t1.gmt_create < t2.latest_gmt_create OR t1.id < t2.latest_id );       
相关文章
|
6月前
表格存储表删除后重建,为什么会占用空间
表格存储表删除后重建,为什么会占用空间
52 3
|
1月前
|
存储 前端开发 Oracle
物化视图添加删除列测试
物化视图添加删除列测试
12 2
|
8月前
|
关系型数据库 MySQL 索引
mysql索引的创建删除
mysql索引的创建删除
82 0
测试关于索引的操作-创建索引
测试关于索引的操作-创建索引
测试关于索引的操作- 修改索引
测试关于索引的操作- 修改索引
|
SQL 关系型数据库 MySQL
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
259 0
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
|
SQL 关系型数据库 MySQL
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
1180 0
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
|
索引
索引分类、创建索引、删除索引
索引分类、创建索引、删除索引
115 0
索引分类、创建索引、删除索引