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

如何编写SQL脚本删除表M中未在表A、表S存在的客户数据?

删除表M中既不在表A也不在表S的客户数据

要实现删除表M里那些既不存在于表A、也不存在于表S的客户数据,这里提供两种常用的SQL写法,你可以根据使用的数据库选择合适的方式:

方法一:使用NOT EXISTS(推荐,兼容性好且避免NULL问题)

这种方式逻辑直观,而且不会因为A或S表中Customer字段存在NULL值而出错:

DELETE FROM M
WHERE NOT EXISTS (
    SELECT 1 FROM A WHERE A.Customer = M.Customer
)
AND NOT EXISTS (
    SELECT 1 FROM S WHERE S.Customer = M.Customer
);

逻辑说明:逐个检查M表的每条记录,当这条记录的Customer在A表中找不到匹配,同时在S表中也找不到匹配时,就删除该记录。

方法二:使用NOT IN + UNION

通过UNION合并A和S表的所有客户,再筛选M表中不在这个集合里的记录:

DELETE FROM M
WHERE Customer NOT IN (
    SELECT Customer FROM A
    UNION
    SELECT Customer FROM S
);

注意事项:如果A表或S表的Customer字段存在NULL值,NOT IN会导致结果不符合预期(因为NULL与任何值比较的结果都是UNKNOWN),这种情况下建议优先用方法一。

安全提示

执行删除操作前,建议先把DELETE换成SELECT *,验证要删除的记录是否符合预期:

-- 先验证待删除的记录
SELECT * FROM M
WHERE NOT EXISTS (
    SELECT 1 FROM A WHERE A.Customer = M.Customer
)
AND NOT EXISTS (
    SELECT 1 FROM S WHERE S.Customer = M.Customer
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:55:18