优化一下这段sql (case when exists (select 1 from mcc_callback_task mct where mct.policy_no = mucp.policy_no and mct.issue_flag <> 'N') then '是' when exists (select 1 from mcc_callback_task mct where mct.policy_no = mucp.policy_no and mct.issue_flag = 'N') then '否' else '' end) as 是否承保,
时间: 2024-02-10 08:13:23 浏览: 68
sqlselect.rar_SQL 语言_SQL计算值的和_sql_sql 基础_sql 执行
可以考虑将这个 case 语句转换为左连接和聚合函数的方式,这样可以避免多次查询同一个表,提高查询效率。具体转换如下:
```
coalesce(max(case when mct.issue_flag <> 'N' then '是' else null end),
max(case when mct.issue_flag = 'N' then '否' else null end),
'') as 是否承保
from mcc_user_claim_policy mucp
left join mcc_callback_task mct on mct.policy_no = mucp.policy_no
```
这里利用了 coalesce 函数,先将两个 case 语句的结果进行聚合,如果结果为 null,则返回空字符串。同时,将 mcc_user_claim_policy 和 mcc_callback_task 表进行了左连接,避免了多次查询同一个表。
阅读全文