左加入 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)
下面给出的是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)