左加入 SQL 以识别某些行

Left join in SQL to identify certain rows

下面给出的是table答:

Cust_id Code
1 101
1 102
1 103
2 201

Table乙:

Cust_id Code
1 101
1 102

TableB只有客户1,并且只有客户1的两个产品编码。 我想识别 Table B 中不存在的客户代码 Table B.

Cust_id Code
1 103

为了得到这个,我在 cust_id 上做了 Table A left join Table B 和代码,并认为那些在 Table B 中具有空值的代码会给出想要的结果,但似乎没有用。如果有人能说出正确的步骤应该是什么,那将非常有帮助。谢谢

到目前为止我的查询:

select a.cust_id, a.code, b.cust_id as customer, b.code as product 
from a 
left join b on a.cust_id = b.cust_id and a.code = b.code

两个条件:

  • cust_id 必须在 table B
  • (cust_id, code) 不能在 table B

带有条件的查询几乎从人类语言直接翻译成 SQL:

select *
from a
where cust_id in (select cust_id from b)
and (cust_id, code) not in (select cust_id, code from b);
  • 列表项

  • 你好其他解决方案使用 exists


select a.cust_id, a.code
  from TABLEA a  left   join TABLEB  b on 
      a.cust_id=b.cust_id and a.code=b.code
 where b.cust_id is null and exists( select * from TABLEB 
      where cust_id=a.cust_id)