gpt4 book ai didi

MYSQL Group by 和 Group Concat 问题

转载 作者:可可西里 更新时间:2023-11-01 08:08:59 24 4
gpt4 key购买 nike

如何使用 Group byGroup_concat 通过 1 个 SQL 查询实现以下两种情况?

对于情况 1,即使设备 1,2 和 3,4 的组 ID 不同,输出设备 ID 仍应串联,因为组 1 和组 2 的名称和平台相同。

CASE 1
Table: SMARTPHONE==========================================GROUP_ID DEVICE_ID NAME PLATFORM1 1 LG ANDROID1 2 APPLE IOS2 3 LG ANDROID2 4 APPLE IOS
Desired OutputROW DEVICE_ID0 1,2,3,4

对于情况 2,由于组 2 中的其中一个名称值与组 1 不同
(即设备 3,Samsugn 不等于设备 1,LG)因此它将被分成两个不同的组。

CASE 2
Table: SMARTPHONE==========================================GROUP_ID DEVICE_ID NAME PLATFORM1 1 LG ANDROID1 2 APPLE IOS2 3 SAMSUGN ANDROID2 4 APPLE IOS Desired OutputROW DEVICE_ID0 1,21 3,4

这就像将所有值作为一个组进行比较。如果该组与另一组具有相同的值,则应像案例 1 一样将它们的 id 组合在一起。如果不是,则应将它们分开。


我尝试过@Zaynul Abadin Tuhin 建议的内容。
对于案例 1,我尝试了 select 1 as grp,group_concat(DEVICE_ID SEPARATOR ',')
来自 grp 的学校组
联盟
选择 GROUP_ID,group_concat(DEVICE_ID SEPARATOR ',')
来自学校组 GROUP_ID
但我得到

OutputROW   DEVICE_ID0     1,2,3,41     1,22     3,4

我希望如果我在案例 1 上运行查询,它会给我案例一中显示的所需结果。如果我对案例 2 运行相同的查询,它会给出案例二中显示的所需结果。

最佳答案

试试这个:

select @rn := 0;
select @rn := @rn + 1 rn,
group_concat(device_ids),
names, platforms
from (
select group_id,
group_concat(device_id) device_ids,
group_concat(name order by name) names,
group_concat(platform order by platform) platforms
from tbl
group by group_id
) a group by names, platforms

Demo

它使用双重聚合,首先通过 group_id,然后通过连接的名称分组,平台是相同的(我使用 order by 以确保它将独立匹配顺序)。

关于MYSQL Group by 和 Group Concat 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52198619/

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