mysql之case..when ..then..else..end as..用法


1.示例1

查詢1:作為查詢結果

select case when mdjlx = 'db_jz' then 1 when mdjlx = 'kn_jz' then 2 when mdjlx = 'wb_jz' then 3 else 4 end as mdjlx
from sr_main_ww where mhzsfz = '330127199210021719';

SELECT
count(1) AS ncount,
(
CASE sys_sjbj
WHEN 0 THEN
'個人發布'
WHEN 1 THEN
'組織發布'
WHEN 2 THEN
'機構發布'
ELSE
'其他'
END
) AS fblx,
ifnull(
sum(CASE rlzt WHEN 2 THEN 1 ELSE 0 END),
0
) AS xyl,
ifnull(
ROUND(
sum(
TIMESTAMPDIFF(DAY, fbsj, rlsj)
) / sum(CASE rlzt WHEN 2 THEN 1 ELSE 0 END),
1
),
0
) AS pjrlsj
FROM
sr_xqfb
WHERE
fbrq LIKE '2019%'
GROUP BY
-- sys_sjbj
fblx

2.示例2

更新表1:

//更新表,將中文轉為對應數字
update st_qlsx set qlsx_lx = CASE WHEN qlsx_lx='許可' THEN '01' WHEN qlsx_lx='處罰' THEN '03'
END ;

3.示例3

插入表1

insert into sr_main_sjzhk(sys_spzt,sys_djzt,sys_scbj,mdjlx,pk_sr_main,sys_xzqh,xzqh,mhz,mhzsfz,mjtrk,main_xm_sam20,mjzksrq,main_xm_sam21,MAIN_XM_SAM22,MAIN_XM_SAM23)
select (case when bzzt = '在保' then 1 else 4 end ) as sys_spzt, (case when bzzt = '在保' then 1 else 0 end ) as sys_djzt, 0 as sys_scbj,'ywgl_sjst' as mdjlx, ? as pk_sr_main,xzqh as sys_xzqh,xzqh as xzqh,bzdxxm as mhz,bzdxsfzh as mhzsfz,jtrs as mjtzrk,bzfs as main_xm_sam20,gxsj as mjzksrq,bzzt as main_xm_sam21 ,bzjtbh as MAIN_XM_SAM22 ,? as MAIN_XM_SAM23 from sr_gzf where SFZSQR = '是' and clbj =0 and id = ? and pk_sr_gzf = ?";

4.作為where后的查詢條件

SELECT
*
FROM
sr_main_ylyj a,
mz_xzjg b
WHERE
a.sys_xzqh = b.xzqh_id
AND b.node_id LIKE '33%'
AND sys_scbj = 0
AND a.sys_spzt = 0
AND (
CASE
WHEN a.msfczdx IS NOT NULL
AND a.msfczdx <> '' THEN
0
ELSE
1
END
) = '0'
ORDER BY
a.pk_sr_main_ylyj DESC
LIMIT 0,
15


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM