求符合特定条件的SQL JOIN脚本:排除指定类型零金额记录
解决方案
要实现需求,我们可以通过内连接两张表,并在WHERE子句中设置过滤条件,精准排除type_ID为1且amount为0的记录,同时保留符合要求的其余数据。
实现SQL
SELECT ct.type_ID, ct.descrip, p.Payment_id, p.amount FROM commontypes ct INNER JOIN Payments p ON ct.type_ID = p.Common_Type_id WHERE -- 排除type_ID=1且amount=0的记录,等价于保留type_ID≠1 或者 type_ID=1但amount≠0的记录 NOT (ct.type_ID = 1 AND p.amount = 0);
逻辑说明
- 使用
INNER JOIN关联两张表,确保只返回存在对应关系的有效记录; WHERE条件中的NOT (ct.type_ID = 1 AND p.amount = 0)直接过滤掉目标排除项,同时自动保留两类数据:- 所有
type_ID为2的记录(无论amount是否为0); type_ID为1且amount不为0的记录。
- 所有
执行结果
执行上述SQL后,返回的记录如下:
| type_ID | descrip | Payment_id | amount |
|---|---|---|---|
| 1 | GOV | 2 | 2558 |
| 2 | NON GOV | 3 | 4556 |
| 2 | NON GOV | 4 | 7882 |
| 2 | NON GOV | 5 | 0 |
内容的提问来源于stack exchange,提问作者Saran
相关产品推荐
相关产品推荐

