MYSQL 根据条件假删除多余的重复数据

在MySQL中,如果您想根据特定条件更新表中的记录,并且这些记录是基于重复数据的一部分,您可以使用UPDATE语句结合JOIN和窗口函数(如ROW_NUMBER())。在您提供的例子中,您想要更新table_a 表,将除了每组重复记录中的第一行之外的所有行的is_delete字段设置为1,并且设置delete_by_uuid字段为'xingzhic'。同时,您还添加了一些额外的筛选条件。

请注意,在MySQL中,窗口函数(如ROW_NUMBER())不能在UPDATE语句的WHERE子句中直接使用。因此,您需要使用一个子查询或临时表来先确定哪些行应该被更新。以下是一个可能的解决方案,它使用了子查询和JOIN来执行更新操作:

UPDATE table_a t1  
JOIN (  
    SELECT id  
    FROM (  
        SELECT id, ROW_NUMBER() OVER (PARTITION BY student_userid ORDER BY id) AS rn  
        FROM table_a
        WHERE school_year_id = 32  
          AND is_delete = '0'  
          AND company_uuid = 'xxxxxx'  
    ) AS subquery  
    WHERE rn > 1  
) t2 ON t1.id = t2.id  
SET t1.is_delete = '1', t1.delete_by_uuid = 'xingzhic';

在这个查询中:

  1. 内部子查询(subquery)首先选择了table_a 表中满足所有指定条件(school_year_idis_deletecompany_uuid)的记录,并为每组student_userid分配了一个行号(rn)。

  2. 外部子查询(t2)从内部子查询中选择了那些行号大于1的记录,即每组重复记录中除了第一行之外的所有行。

  3. UPDATE语句通过JOIN操作连接了原始表table_a (t1)和外部子查询结果(t2),连接条件是id字段相等。

  4. SET子句将连接结果中t1表的is_delete字段设置为1,并将delete_by_uuid字段设置为'xingzhic'。

请注意,ORDER BY idROW_NUMBER()函数中是必要的,因为窗口函数需要知道如何对每组内的行进行排序。您需要替换id为您想要根据其排序的列名。

再次提醒,在执行更新操作之前,请确保备份您的数据,并在一个安全的环境中测试这些查询,以确保它们按预期工作。

相关推荐

  1. MYSQL 根据条件删除多余重复数据

    2024-02-21 12:02:03       29 阅读
  2. 删除有序数组重复

    2024-02-21 12:02:03       34 阅读
  3. 删除有序数组重复

    2024-02-21 12:02:03       11 阅读
  4. ajax请求数据方法

    2024-02-21 12:02:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 12:02:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 12:02:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 12:02:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 12:02:03       20 阅读

热门阅读

  1. 面试浏览器框架八股文十问十答第三期

    2024-02-21 12:02:03       32 阅读
  2. package.json文件详解

    2024-02-21 12:02:03       36 阅读
  3. 纯css实现文字左右循环滚动播放效果

    2024-02-21 12:02:03       28 阅读
  4. 有哪几种行为会导致服务器被入侵

    2024-02-21 12:02:03       28 阅读
  5. 【Spring Boot Bean 注入详解】

    2024-02-21 12:02:03       25 阅读
  6. 12.27 校招 实习 内推 面经

    2024-02-21 12:02:03       36 阅读
  7. 编程笔记 Golang基础 011 控制台输入与输出

    2024-02-21 12:02:03       27 阅读
  8. 浙大版C语言题目集-函数题6

    2024-02-21 12:02:03       31 阅读
  9. uniapp 放大中间图标

    2024-02-21 12:02:03       33 阅读
  10. SpringBoot整理-Actuator

    2024-02-21 12:02:03       30 阅读
  11. 2024年云计算环境下安全好用的堡垒机推荐

    2024-02-21 12:02:03       30 阅读
  12. Json详解

    2024-02-21 12:02:03       25 阅读
  13. 基于Spring Boot的多级缓存系统设计

    2024-02-21 12:02:03       24 阅读
  14. redis相关面试题

    2024-02-21 12:02:03       35 阅读