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

新手技术问询:如何删除Table1中存在于Table2或Table3的Contact ID

解决Table1中删除存在于Table2/Table3的Contact ID问题

你当前写的SQL是用来查询不在Table2和Table3中的Table1 ID,和你的需求(删除存在于Table2或Table3的ID)逻辑完全相反了。下面给你几个正确的实现方式:

方法1:用UNION合并待删除ID集合

DELETE FROM Table1
WHERE ID IN (
    SELECT ID FROM Table2
    UNION
    SELECT ID FROM Table3
)

通过UNION自动去重Table2和Table3里的ID,一次性匹配所有需要删除的记录,效率较高。

方法2:用EXISTS逐个匹配

DELETE FROM Table1 t1
WHERE EXISTS (SELECT 1 FROM Table2 t2 WHERE t2.ID = t1.ID)
   OR EXISTS (SELECT 1 FROM Table3 t3 WHERE t3.ID = t1.ID)

只要Table1的ID在Table2或Table3中存在,就执行删除,这种写法在大表场景下性能表现可能更好。

新手必看提醒

  • 删数据前一定要先验证:把DELETE换成SELECT *,执行后确认要删除的记录完全符合预期,避免误删。
  • 可以用事务保护操作:比如先执行BEGIN TRANSACTION,删除后检查结果,没问题就COMMIT,出错了直接ROLLBACK回滚。
  • 子查询里的DISTINCT没必要加,IN和EXISTS会自动处理重复ID,不会重复删除同一条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:12:23