如何编写MySQL语句按指定规则过滤信贷编号对应子码数据
MySQL信贷数据按子码规则过滤查询方案
核心规则对齐
- 主码定义:
09101、09203,其余子码均为非主码 - 存在主码的信贷编号:仅返回主码对应记录,过滤所有非主码记录
- 无主码的信贷编号:返回该编号下全部记录
可直接运行的SQL语句
注意:将语句中的
credit_record替换为你实际使用的业务表名即可,字段名已按题述带空格的Credit Nm做了转义适配
SELECT t.`Credit Nm`, t.Subcode FROM credit_record t LEFT JOIN ( -- 查出所有存在主码的信贷编号 SELECT DISTINCT `Credit Nm` FROM credit_record WHERE Subcode IN ('09101', '09203') ) has_main ON t.`Credit Nm` = has_main.`Credit Nm` WHERE (has_main.`Credit Nm` IS NOT NULL AND t.Subcode IN ('09101', '09203')) OR has_main.`Credit Nm` IS NULL;
效果验证
- 测试场景1:信贷编号
85552553同时关联09101、09203、09A03、09B03、09C03,查询仅返回2条主码对应记录,非主码记录全部被过滤 - 测试场景2:信贷编号
95523469仅关联09A03、09B03两个非主码,查询返回该编号下全部2条记录
内容的提问来源于stack exchange,提问作者Anne
相关产品推荐
相关产品推荐

