查询多个结果是用case when 条件显示列的查询效率高,还是查询后union all合并效率高.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询多个结果是用case when 条件显示列的查询效率高,还是查询后union all合并效率高.相关的知识,希望对你有一定的参考价值。
比如
select name,case bz when 1 then gongzhi else 0 end as f1 ,case bz when 2 then gongzhi else 0 end as f2
from 工资表
-------
select name, case bz when 1 then gongzhi else 0 end as f1 , 0 as f2
from 工资表
union all
select name, 0 as f1 ,case bz when 2 then gongzhi else 0 end as f2
from 工资表
哪个效率高?
第一读表一次判断两次
第二读表两次判断两次
case when用法
参考技术A case有以下几种搭配:in any case表示无论如何;in no case表示绝不。when有以下几种用法:表示什么时候、何时;可以引导从句;俚语“入乡随俗”。Case具有两种格式:简单Case函数和Case搜索函数。
简单Case函数:
CASE sex
WHEN ‘1’ THEN ‘男’
WHEN ‘0’ THEN ‘女’
ELSE ‘其他’ END
Case搜索函数:
CASE WHEN sex = ‘1’ THEN ‘男’
WHEN sex = ‘0’ THEN ‘女’
ELSE ‘其他’ END
显然,简单Case函数胜在简洁,但是它只适用于这种单字段的单值比较,而Case搜索函数的优点在于适用于所有比较的情况。
还有一个需要注意的问题,Case函数在满足了某个符合条件后,剩下的条件将会被自动忽略,因此,即使满足多个条件,执行过程中也只认第一个条件。
以上是关于查询多个结果是用case when 条件显示列的查询效率高,还是查询后union all合并效率高.的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django 的 Case/When 查询集条件来设置多个值?
CASE .. Oracle SQL 中的 WHEN 表达式