Mysql 多條件判斷拼接字段數據

Mysql 多條件判斷拼接字段數據

示例

先去重加上distinct

select distinct
job_function_code,job_sub_function_code,job_fam_function_code from ps_inf_job_code
order by job_function_code asc

去重結果

想獲取從後到前的path關係 並且獲取最後一級數據作爲code ,利用case when then else end 語句構造,when裏可以寫判斷條件,表達式  then後可以是固定值,可以是拼接值,可以是字段值,參考下面示例及結果展示

select distinct
'function'as cate_code0,
'main_function'as cate_code1,
 (CASE
 WHEN (job_sub_function_code != '' or job_sub_function_code != null)
          and (job_fam_function_code = null or job_fam_function_code = '')THEN 'sub_function'
else '' END)as cate_code2,
 (CASE
 WHEN (job_fam_function_code != '' or job_fam_function_code != null)THEN 'fam_function'
else '' END)as cate_code3,
(CASE
 WHEN (job_sub_function_code != '' or job_sub_function_code != null)
          and (job_fam_function_code = null or job_fam_function_code = '')THEN CONCAT(job_function_code)
 WHEN job_fam_function_code != null or job_fam_function_code != '' THEN concat(job_function_code,'>',job_sub_function_code)
END)as path,
(CASE
 WHEN (job_function_code != '' or job_function_code != null)
          and (job_sub_function_code = null or job_sub_function_code = '')
          and (job_fam_function_code = null or job_fam_function_code = '')THEN job_function_code
 WHEN (job_sub_function_code != '' or job_sub_function_code != null)
          and (job_fam_function_code = null or job_fam_function_code = '')THEN job_sub_function_code
 WHEN job_fam_function_code != null or job_fam_function_code != '' THEN job_fam_function_code
END)as code,
job_function_code,job_sub_function_code,job_fam_function_code
 from ps_inf_job_code order by code asc

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章