gpt4 book ai didi

mysql - 在具有相同 ID 的选择查询中合并两行

转载 作者:行者123 更新时间:2023-11-29 04:42:08 25 4
gpt4 key购买 nike

我有这个问题

SELECT 
`sys_forms`.`FormID`,
`sys_forms`.`FormName`,
`sys_forms`.`FormCIPath`,
`sys_forms_in_groups`.`IsMenuLink`,
`sys_forms_in_groups`.`GroupID`

FROM (`sys_forms`) INNER JOIN `sys_forms_in_groups`
ON `sys_forms_in_groups`.`FormID` = `sys_forms`.`FormID` WHERE `GroupID` = 1
UNION
SELECT
`sys_forms`.`FormID`,
`sys_forms`.`FormName`,
`sys_forms`.`FormCIPath`,
`sys_forms_in_groups`.`IsMenuLink`,
`sys_forms_in_groups`.`GroupID`

FROM (`sys_forms`) INNER JOIN `sys_forms_in_groups`
ON `sys_forms_in_groups`.`FormID` = `sys_forms`.`FormID` WHERE `GroupID` = 2

它返回给我以下数据。

enter image description here

如您所见,有两个相同的FormID

我想要的是,如果 ID 相同,则应合并行,但 GroupID 对于两个相同的 FormID 是不同的。

所以我希望他们以 CSV 格式加入,这样结果就是

FormID FormName        -  -   GroupID
-------------------------------------------------
48 FormsIn Groups - - 1,2

最佳答案

指定的结果可以通过这样的查询返回:

SELECT f.FormID
, f.FormName
, f.FormCIPath
, MAX(g.IsMenuLink) AS IsMenuLink
, GROUP_CONCAT(DISTINCT g.GroupID ORDER BY g.GroupID) AS GroupIDs
FROM `sys_forms` f
JOIN `sys_forms_in_groups` g
ON g.FormID = f.FormID
AND g.GroupID IN (1,2)
GROUP BY f.formID

GROUP_CONCAT 聚合会将多个值组合成一个逗号分隔的列表。 (可以指定不同的分隔符,默认为逗号。)

我们在 IsMenuLink 列周围使用 MAX 聚合,因此我们得到一个非 NULL 值来代替 NULL。

关于mysql - 在具有相同 ID 的选择查询中合并两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228164/

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