我编写了两个查询来连接具有不同条件的值,两个查询的结果应该是相同的,但是使用query2无法得到正确的结果。这两个查询如下:
query1:
SELECT 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 ,lnkconfigurationitemtosinglecheck 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 sgk.single_check_id = lkcg.single_check_id and sgk.status = 'active' GROUP BY cc.NAME使用query1,我可以得到以下结果:
res_string
----------------------------------------------------------------------------------------------------------
MIL04DNS01;memory check and ,MIL04DNS01;cpu_check and
MIL04APPBOXIP01;cpu_check and ,MIL04APPBOXIP01;memory check and
Sito_Saturn_Secure;log in check andQuery2:
SELECT 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 ,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' and cc.complex_check_id <> cmt.comp_o_id GROUP BY sgk.NAME使用query2,我可以得到以下结果:
res_string
-------------------------------------------------------------------------------------------------------------------------------
MIL04DNS01;memory check and ,MIL04DNS01;cpu_check and ,MIL04DNS01;memory check and ,MIL04DNS01;cpu_check and ,MIL04DNS01;memory check and ,MIL04DNS01;cpu_check and
MIL04APPBOXIP01;cpu_check and ,MIL04APPBOXIP01;memory check and ,MIL04APPBOXIP01;cpu_check and ,MIL04APPBOXIP01;memory check and ,MIL04APPBOXIP01;cpu_check and ,MIL04APPBOXIP01;memory check and
Sito_Saturn_Secure;log in check and ,Sito_Saturn_Secure;log in check and ,Sito_Saturn_Secure;log in check and and ,MIL04DNS01;memory check and ,MIL04APPBOXIP01;memory check and 您能给我一些后缀来修改query2以获得与query1 ?...Thanks相同的结果吗?
发布于 2015-05-04 15:34:17
以下是一些建议:
CONCAT函数可以接受任意多的参数,所以不需要concat(concat(concat...FROM tbl1,tbl2,tbl3...表中使用JOIN。它应该由LEFT JOIN、RIGHT JOIN或INNER JOIN使用ON规则清楚地设置。comp_t_anag cmt必须如何加入。我看不出加入那张桌子的真正关键。我对所有的表都做了LEFT JOIN,也许您需要在某个地方使用INNER,这样就可以使用它了。选择GROUP_CONCAT(CONCAT(f.NAME,‘);“,sgk.NAME,”,cc.operator,(‘’)作为res_string从complex_check_anag cc左加入lnksinglechecktocomplexcheck lk ON cc.complex_check_id = lk.complex_check_id左连接single_check_anag sgk ON sgk.single_check_id = lk.single_check_id和sgk.status = 'active‘左连接lkcg ON sgk.single_check_id = lkcg.single_check_id左连接功能表f ON f.id = lkcg.config_item_id左连接comp_t_anag comp_t_anag关于cc.complex_check_id <> cmt.comp_o_id群的sgk.NAME
https://stackoverflow.com/questions/30033279
复制相似问题