如何将MySQL select语句与group_concat和case条件结合使用?

如何将MySQL select语句与group_concat和case条件结合使用?,mysql,case,group-concat,Mysql,Case,Group Concat,我用group_concat编写了mysql select语句,可以得到正确的结果。但是,如果我用case donedition修改select语句,就无法得到正确的结果。我的select声明如下: SELECT replace(concat(concat(complex_check_name, '='), res_string), ',', '') results FROM (SELECT cc.NAME complex_check_name, group_concat(concat(con

我用group_concat编写了mysql select语句,可以得到正确的结果。但是,如果我用case donedition修改select语句,就无法得到正确的结果。我的select声明如下:

SELECT replace(concat(concat(complex_check_name, '='), res_string), ',', '') results FROM 
(SELECT cc.NAME complex_check_name, group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,cc.operator),' ')) as res_string
FROM complex_check_anag cc,lnksinglechecktocomplexcheck lk,single_check_anag sgk,functionalci f ,lnkciitemtocomplexcheck lkcg 
WHERE cc.complex_check_id = lk.complex_check_id AND sgk.single_check_id = lk.single_check_id and f.id = lkcg.config_item_id 
and cc.complex_check_id = lkcg.compx_check_id GROUP BY cc.NAME) x
SELECT replace(concat(concat(complex_check_name, '='), res_string), ',', '') results FROM 
(SELECT cc.NAME complex_check_name, group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,
CASE cc.operator when 'and'  then '&' when 'or' then '||' END CASE),' ')) as res_string 
FROM complex_check_anag cc,lnksinglechecktocomplexcheck lk,single_check_anag sgk,functionalci f ,lnkciitemtocomplexcheck lkcg 
WHERE cc.complex_check_id = lk.complex_check_id AND sgk.single_check_id = lk.single_check_id and f.id = lkcg.config_item_id 
and cc.complex_check_id = lkcg.compx_check_id GROUP BY cc.NAME) x
使用此select语句,我可以得到以下结果:

checks CO04=INFRAVICO04;cpu check CO04 and INFRAVICO04;disk check CO04 and INFRAVICO04;mem check CO04 and 
checks CO05=INFRAVICO05;cpu check CO05 or INFRAVICO05;disk check CO05 or INFRAVICO05;mem check CO05 or 
checks DB01=INFRASEPDB01;mem check DB01 and INFRASEPDB01;cpu check DB01 and INFRASEPDB01;disk check DB01 and 
我想在结果中用&,或| |替换and;该值位于cc.operator字段中。因此,我对前面的select语句进行了如下修改:

SELECT replace(concat(concat(complex_check_name, '='), res_string), ',', '') results FROM 
(SELECT cc.NAME complex_check_name, group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,cc.operator),' ')) as res_string
FROM complex_check_anag cc,lnksinglechecktocomplexcheck lk,single_check_anag sgk,functionalci f ,lnkciitemtocomplexcheck lkcg 
WHERE cc.complex_check_id = lk.complex_check_id AND sgk.single_check_id = lk.single_check_id and f.id = lkcg.config_item_id 
and cc.complex_check_id = lkcg.compx_check_id GROUP BY cc.NAME) x
SELECT replace(concat(concat(complex_check_name, '='), res_string), ',', '') results FROM 
(SELECT cc.NAME complex_check_name, group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,
CASE cc.operator when 'and'  then '&' when 'or' then '||' END CASE),' ')) as res_string 
FROM complex_check_anag cc,lnksinglechecktocomplexcheck lk,single_check_anag sgk,functionalci f ,lnkciitemtocomplexcheck lkcg 
WHERE cc.complex_check_id = lk.complex_check_id AND sgk.single_check_id = lk.single_check_id and f.id = lkcg.config_item_id 
and cc.complex_check_id = lkcg.compx_check_id GROUP BY cc.NAME) x
但是,有一条错误消息,我无法得到正确的结果。你能给我一些建议吗?
我真的很感谢你的帮助

错误消息说什么?如果只是替换,那么为什么不将第一个查询修改为replaceCatComplex_check_name,'=',res_string,','和','&','或','| |'results@JaakKütt,错误消息是您的SQL语法有错误;请查阅与您的MySQL服务器版本对应的手册,了解使用“CASE”附近的正确语法,如第3行的“complex_check_anag cc,lnksinglechecktocomplexche”中的res_stringlot@AbhikChakraborty,不,我不能在sql语句中使用替换关键字,因为如果reuslt包含一些带有或类似于:端口号检查的单词,则replace将无法正常工作。谢谢@JaakKütt,是的,当陈述涵盖所有案例时;我还修改为:CASE cc.operator when'and'then'&'when'或'then'| |'ELSE NULL END CASE。但是,它不起作用。谢谢