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

如何获取INNER JOIN查询结果的反向数据集?

获取表A中不在表B禁售列表里的数据

首先明确你的表结构和现有数据:

item_serial_no (表A)  | forbidden_item_serial_no (表B)
--------------            | --------------
1                         | 1
2                         | 3
3                         | 5
4                         | 7
5
6
7

你之前用内连接(INNER JOIN)得到的是两张表中编号匹配的结果(1、3、5、7),现在需要的是表A中所有不在表B禁售列表里的编号,可以用以下几种简单的实现方式:

方法1:使用NOT IN

这种写法最直观,直接筛选表A中编号不在表B禁售列表里的记录:

SELECT A.item_serial_no
FROM A
WHERE A.item_serial_no NOT IN (SELECT forbidden_item_serial_no FROM B)

方法2:使用LEFT JOIN + IS NULL

通过左连接保留表A的所有记录,然后筛选出表B中没有匹配的(也就是B字段为NULL的)记录:

SELECT A.item_serial_no
FROM A
LEFT JOIN B ON A.item_serial_no = B.forbidden_item_serial_no
WHERE B.forbidden_item_serial_no IS NULL

方法3:使用NOT EXISTS

这种写法逻辑是“筛选表A中不存在于表B禁售列表的记录”,大数据量下性能表现通常不错:

SELECT A.item_serial_no
FROM A
WHERE NOT EXISTS (
    SELECT 1 
    FROM B 
    WHERE B.forbidden_item_serial_no = A.item_serial_no
)

这三种方法都能得到你想要的结果:

result query
------------
2
4
6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:33:19