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

如何使用多列关联JOIN改写给定NOT EXISTS逻辑的SQL查询

等效JOIN查询实现

实现代码

SELECT
    A.id_pk, A.col1, A.col2, A.col
FROM table1 A
LEFT JOIN table2 B 
    ON A.id_pk = B.id_pk
    AND A.col1 = B.col1
    AND A.col2 = B.col2
WHERE B.id_pk IS NULL;

注意事项

  • 三个字段的匹配条件必须全部放在ON子句中,不能挪到WHERE子句里,否则左连接会被过滤为内连接效果,无法筛选出未匹配的记录
  • WHERE子句选择B表的非空字段做NULL判断即可,这里选择关联用的id_pk是因为主键天然非空,不会出现字段本身为NULL导致的误判
  • 该写法和原NOT EXISTS查询结果完全一致,MySQL、PostgreSQL、Oracle等主流数据库的优化器会将两者识别为等效执行计划,执行效率没有差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:00