id | flight_manager(执管单位) | sub_feet(子机型) | all_match(是否匹配) | fleet(主机型) |
1 | TAO | 319-320 | 1 | 320 |
2 | KHN | 319-320-321-323 | 0 | 320 |
3 | 321-323-320-325 | 1 | 320 |
如上表,需求:现在有个机型 320 ,执管单位KHN 要去上表中匹配数据
规则是:allmatch ==1 是要匹配 subfeet 字段里的值 查询出subfeet的值
allmatch ==0 是要匹配 feet 字段里的值 查询出feet的值,我现在是分2次查询,如下:
sql1:
select sub_fleet from t_flight_manager_fleet t where 1 = 1
and t.flight_manager = 'KHN'
and t.all_match = '1' and t.sub_fleet like '%320%';
sql2:
select fleet from t_flight_manager_fleet t1 where 1 = 1
and t1.flight_manager = 'KHN'
and t1.all_match = '0' and t1.fleet='320';
现在的解决方案就是 去库里分2个sql查询,将查询的结果合并到一个list中再做处理,但考虑这种方式要查询2次数据库,如果数据量较大的话开销比较到,运行也慢,请问有没有写一条sql满足我的需求?(注意:不能使用union,union all)请大家指点一下。