You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含OR条件的重复数据DELETE查询异常原因咨询

问题原因分析

你遇到的情况本质是两个条件用OR组合后,覆盖了同组(cn+activity相同)内除最后保留的那一条之外的所有条目,具体逻辑拆解如下:

  1. 第一个条件(删除早于最新时间戳的条目):针对的是同组内timestampms小于该组最大timestampms的所有记录,这些记录本来就该被删除。
  2. 第二个条件(删除timestampms相同的多余项):针对的是同组内timestampms等于最大timestampms,但属于重复的那些记录(比如同组有多个相同最新时间的条目,只留一条,其余都标记为要删除)。

当用OR把这两个条件组合时,相当于告诉数据库:只要记录满足「不是最新时间」或者「是最新时间但属于重复项」,就删除它。这样一来,同组内的所有记录里,只有「最新时间且是该组唯一保留的那条」能逃过删除,自然就只剩一条了。

举个实际例子:假设同组(cn=1,activity="test")有三条记录:

  • 记录A:timestampms=100,id=1
  • 记录B:timestampms=200,id=2
  • 记录C:timestampms=200,id=3

单独执行第一个条件会删掉记录A;单独执行第二个条件会删掉记录B或C中的一个;组合OR后,记录A满足第一个条件被删,记录B和C满足第二个条件(都是最新时间但属于重复项),所以其中一条会被保留,另外两条全删,最终只剩一条最新时间的记录。

其实这个结果是符合你的需求的——既要删早于最新时间的,又要删最新时间的多余重复项,最终每个cn+activity组合下只保留一条最新时间的记录。如果你原本希望保留所有最新时间的条目(仅删除更早的),那第二个条件就不该加进去,或者你对第二个条件的逻辑设定有误。

内容的提问来源于stack exchange,提问作者burn_it

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:15:33