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

如何创建删除查询清除tbl_NTE与tbl_PAH中的重复记录并保留原始数据?

嘿,我明白你现在的困扰——每次触发追加查询都会在tbl_PAH里产生重复记录,想要清理掉这些重复只留原始数据对吧?我给你几个实用的方案,还有从根源避免重复的办法:

方案1:删除tbl_PAH中与tbl_NTE重复的记录(保留tbl_NTE的原始记录)

如果你的核心需求是让tbl_PAH只存tbl_NTE里没有的记录,直接用这个删除查询就可以:

DELETE tbl_PAH.*
FROM tbl_PAH
WHERE tbl_PAH.CaseIDNo IN (SELECT CaseIDNo FROM tbl_NTE);

注意事项:

  • 执行前一定要备份数据表,避免误删重要数据!
  • 不确定结果的话,可以先把DELETE改成SELECT *,预览要删除的记录,确认无误后再改回DELETE执行。
方案2:删除tbl_PAH内部的重复记录(保留每条CaseIDNo的最早记录)

如果是tbl_PAH自己内部出现了多条相同CaseIDNo的重复记录(比如多次追加导致的),可以根据你数据表的字段情况选择下面的写法:

如果你有自动编号主键(比如名为ID的字段)

DELETE tbl_PAH.*
FROM tbl_PAH
WHERE tbl_PAH.ID NOT IN (
    SELECT MIN(ID)
    FROM tbl_PAH
    GROUP BY CaseIDNo
);

这个查询会把每个CaseIDNo对应的最小ID(也就是最早插入的那条记录)保留下来,删除其他重复的条目。

如果你有记录创建时间的字段(比如名为CreateDate的字段)

DELETE tbl_PAH.*
FROM tbl_PAH
WHERE tbl_PAH.CreateDate NOT IN (
    SELECT MIN(CreateDate)
    FROM tbl_PAH
    GROUP BY CaseIDNo
);

原理和上面一样,只是用创建时间来判断“原始记录”,保留每个CaseIDNo最早创建的那条。

从根源解决:修改追加查询避免重复

与其每次删重复,不如直接改你的追加查询,让它只添加tbl_PAH里没有的记录:

INSERT INTO tbl_PAH (CaseIDNo, [字段1], [字段2], ...) -- 替换成你实际要追加的字段
SELECT CaseIDNo, [字段1], [字段2], ... -- 和上面的字段对应
FROM tbl_NTE
WHERE tbl_NTE.CaseIDNo NOT IN (SELECT CaseIDNo FROM tbl_PAH);

这样每次触发保存按钮时,只会把tbl_NTE里tbl_PAH不存在的记录追加进去,从一开始就杜绝重复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:04:52