gpt4 book ai didi

mysql - mysql 中的 group_concat 条件为 "case when "

转载 作者:行者123 更新时间:2023-11-29 12:15:09 26 4
gpt4 key购买 nike

我在mysql环境中编写了sql代码来连接数据。但是,我无法得到正确的结果,而且我对我的 sql 代码出了什么问题感到困惑。我的sql代码如下:

SELECT case when cc.complex_check_id = cmt.comp_o_id then cc.status cstatus,sgk.status sgstatus,cc.NAME complex_check_name,cc.min min_flag,cmt.comp_t_name cmpt_name,group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,cc.operator),' '))
else cc.status cstatus,sgk.status sgstatus,cc.NAME complex_check_name,cc.min min_flag,'not' as cmpt_name,group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,cc.operator),' ')) end res_string
FROM complex_check_anag cc,lnksinglechecktocomplexcheck lk,single_check_anag sgk,functionalci f ,lnkconfigurationitemtosinglecheck lkcg,comp_t_anag cmt
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 sgk.single_check_id = lkcg.single_check_id and sgk.status = 'active' GROUP BY cc.NAME

您能给我一些建议吗?...非常感谢大家!

最佳答案

您用于 CASE 表达式的语法不正确,您只能在 case 表达式中选择一个表达式,但您选择了多个列,我注意到您只需要一列根据 case 条件进行选择,因此我将所有列移出了 case 表达式,除了该列之外,如下所示:

SELECT 
cc.status cstatus,
sgk.status sgstatus,
cc.NAME complex_check_name,
cc.min min_flag,
group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,cc.operator),' ')),
case when cc.complex_check_id = cmt.comp_o_id then cmt.comp_t_name
else 'not' as
end res_string
FROM complex_check_anag cc ....
.... the rest of your query here

此外,您还可以使用 INNER JOIN 而不是旧的 join 语法重写查询,如下所示:

SELECT 
cc.status cstatus,
sgk.status sgstatus,
cc.NAME complex_check_name,
cc.min min_flag,
group_concat(concat(concat(concat(concat(concat(f.NAME, ';') , sgk.NAME),' ') ,cc.operator),' ')),
case when cc.complex_check_id = cmt.comp_o_id then cmt.comp_t_name
else 'not' as
end res_string
FROM complex_check_anag cc, comp_t_anag cmt
INNER JOIN lnksinglechecktocomplexcheck lk ON cc.complex_check_id = lk.complex_check_id
INNER JOIN functionalci f ON f.id = lkcg.config_item_id
INNER JOIN lnkconfigurationitemtosinglecheck lkcg ON sgk.single_check_id = lk.single_check_id
INNER JOIN single_check_anag sgk ON sgk.single_check_id = lkcg.single_check_id
WHERE sgk.status = 'active'
GROUP BY cc.NAME

请注意,您没有在两个表 complex_check_anag cc, comp_t_anag cmt 之间指定任何条件,因此您将在两个表之间获得笛卡尔积,但它可能不会为您提供正确的数据。因此,请检查这两个表之间的关系,并在它们之间添加适当的联接类型,以获得您正在查找的正确数据。

关于mysql - mysql 中的 group_concat 条件为 "case when ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com