SQL-asc/desc/case-when-then-else-end用法整理

SELECT *FROM emp_sal;
SELECT ename,salary '月薪',salary*12+bonus '年薪' FROM emp_sal;

-- ifnull用法
SELECT IFNULL(bonus,0) FROM emp_sal;
SELECT ename,salary '月薪',salary*12+IFNULL(bonus,0) '年薪' FROM emp_sal;

-- asc升序排序(默认升序),desc降序排序
SELECT *FROM emp_sal ORDER BY salary;
SELECT *FROM emp_sal ORDER BY salary ASC;
SELECT *FROM emp_sal ORDER BY salary DESC;
-- 多字段先后参与排序(默认升序)
SELECT *FROM emp_sal ORDER BY salary,bonus;
SELECT *FROM emp_sal ORDER BY salary ASC,bonus ASC;
SELECT *FROM emp_sal ORDER BY salary DESC,bonus DESC;
SELECT *FROM emp_sal ORDER BY salary ASC,bonus DESC;

-- case when then else end用法一(else可以省略)
-- case value
-- 	when value1 then result1
-- 	when value2 then result2
-- 	else other
-- end
SELECT ename,salary,bonus,
CASE bonus 
	WHEN 500 THEN '一等奖金'
	WHEN 300 THEN '二等奖金'
	WHEN 200 THEN '三等奖金'
	ELSE '无奖金'
END '奖金等级'
FROM emp_sal ORDER BY bonus DESC;

-- case when then else end用法二(else可以省略)
-- case
-- 	when 表达式1 then result1
-- 	when 表达式2 then result2
-- 	else other
-- end
SELECT ename,salary,bonus,
CASE 
	WHEN bonus>250 THEN '高奖金'
	WHEN bonus>0 THEN '低奖金'
	ELSE '无奖金'
END '奖金分类'
FROM emp_sal ORDER BY bonus DESC;
--
SELECT ename,salary,bonus,
CASE 
	WHEN bonus>200 AND bonus<400 THEN '中奖金'
	ELSE '其它奖金'
END '奖金分类'
FROM emp_sal ORDER BY bonus DESC;

-- case when then else end用法三(else可以省略)
-- 用于批量修改(需要where过滤,否则全列都改了salary)
-- case
-- 	when 表达式1 then result1
-- 	when 表达式2 then result2
-- 	else other
-- end
UPDATE emp_sal
SET salary=
CASE
	WHEN ename='小徐' THEN 1201
	WHEN ename='小红' THEN 1201
END
WHERE ename IN('小徐','小红')
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BB-X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值