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

如何使用JOIN替代SELECT NOT IN实现无关联数据的SQL查询

实现代码

你可以通过 LEFT JOIN 搭配空值判断实现需求,无需嵌套子查询:

SELECT c.customer_name
FROM customers c
LEFT JOIN documents d
  ON c.customer_id = d.customer_id
  AND d.document_name = 'Rent contract'
WHERE d.document_id IS NULL;

逻辑说明

  1. 先以客户表为基表,左关联文档表,关联条件同时限定文档类型为「租房合同」,这一步会保留所有客户记录,有对应租房合同的客户会带出文档数据,没有对应合同的客户关联到的文档字段全部为NULL
  2. 最后通过筛选文档主键document_id为NULL的记录,就能得到所有没有租房合同的客户

注意事项

  • d.document_name = 'Rent contract' 必须写在LEFT JOIN的ON子句中,如果写在WHERE子句里,会先过滤掉所有非租房合同的文档记录再关联,逻辑等价于内连接,无法得到正确结果
  • 该写法相比原NOT IN方案,规避了子查询返回结果存在NULL时NOT IN返回空集的兼容性问题,稳定性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:18:03