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