MySQL程序

标签 mysql stored-procedures

我已经进行了更新查询,通过比较 ID(主键)将其中一个重复条目标记为 FAILURE(存在重复条目),但有两个以上的重复条目即将到来,而且所有条目都更新为 FAILURE只是。请帮帮我。这是我的更新查询:

UPDATE P20_Extract_Invoice n1,
       P20_Extract_Invoice n2
SET n1.Closure_Status = 'FAILURE',
    n1.Failure_Reason = 'DUPLICATE_ENTRY'
WHERE n1.WorkItemID = n2.WorkItemID
  AND n1.ID != n2.ID
  AND n1.Closure_Status = 'PICKED_FOR_PROCESSING'
  AND n2.Closure_Status = 'PICKED_FOR_PROCESSING';

最佳答案

如果 ID 7 和 8 的行重复,则更新语句完成的交叉联接将比较 ID=7ID=8 code>,还有 ID=8ID=7,因此两者都会更新。

需要决定保留两者中的哪一个。

例如要保留具有最小 ID 的值,请更改为 n1.ID > n2.ID,即更新具有较高 ID 值的值。

关于MySQL程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49613206/

相关文章:

sql-server - 如何在存储过程中执行动态SQL?

mysql - 在存储过程中连接 3 个表时出现重复输出

mysql - 将日期时间条目与具有多个时间范围的表相匹配

mysql - VB.Net 不使用数据库数据填充数组

mysql - MySQL 唯一的行交换是原子的吗?

MYSQL - 三个表的总和点

java - 带有java字符串数组的Mysql存储过程

mysql - 生成复杂的sql表

mysql - 当一个数据库的名称包含在另一个数据库中时连接两个数据库

mysql - phpmyadmin 在创建存储过程时卡住