1、 select *,a.a2,case when a.a2='1' then '是' when a.a2='2' then '也许是' when a.a2='3' then '不是' ) end maybe from a left join b on a.a1 = b.b1 where a.a2 = '1'
2、 select * from (select *,a.a2,case when a.a2='1' then '是' when a.a2='2' then '也许是' when a.a2='3' then '不是' ) end maybe from a left join b on a.a1 = b.b1) t where maybe = '是'
以上两个查询sql,查询的结果是一样的,请问在执行顺序上有什么不同?
第2比第1句快了几十倍。不知为什么
sql 查询性能问题 case when
答案:2 悬赏:80 手机版
解决时间 2021-04-04 20:39
- 提问者网友:活着好累
- 2021-04-04 00:06
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-04-04 01:35
'不是'后面多了个“)”吧。2中不加条件join怎么还会比1中加条件where a.a2='1'的join快呢?
全部回答
- 1楼网友:鱼忧
- 2021-04-04 01:53
--创建表 create table total ( brand varchar(50) not null, quantity int null, price int null ) --查询语句 select brand as 品牌, case when price < 500 then '500以下' when price > 500 and price < 1000 then '500-1000' when price > 1000 then '1000以上' else null end as 级别, case when price < 500 then sum(quantity) when price > 500 then sum(quantity) when price > 1000 then sum(quantity) else 0 end as 数量, avg(price) as 平均值 from total group by brand,price
最终结果如图所示
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯