不确定标题是否正确解释了情况,但我会尽力在这里解释。
我有一个表,其中有 3 个字段链接到其他表,我想按以下方式对所有行进行分组:
item_id, user_id, group_id
1 2 3
2 2 3
3 4 5
4 2 4
在我的查询中,我希望所有 items_id 以逗号分隔的格式按 group_id 分组,我在 WHERE 子句上也有一些额外的条件,这就是内部连接的原因
我可以用这个查询来做
"SELECT
GROUP_CONCAT( DISTINCT A.item_id ) AS ids
FROM tableA A
INNER JOIN tableB B ON(tableA.id = tableB.id)
WHERE xxxxx
GROUP BY A.group_id
"
稍后我可以循环结果并使用逗号分隔来内部循环结果中的每个 id
但我也想按 user_id 对它进行分组,以便做这样的事情
foreach( query_results.... ){
foreach( group_id.... ){
foreach( item_id.... ){
// Display info
}
}
}
对此有什么想法吗?
最佳答案
使用子查询,我们可以获得两个项目,用户作为两个单独的列
select T1.group_id, T1.itemids, T2.userids
FROM
(SELECT group_id,
GROUP_CONCAT( DISTINCT A.item_id ) AS itemids
FROM table1 A
group by group_id) T1
INNER JOIN
(
SELECT
group_id, GROUP_CONCAT( DISTINCT A.user_id ) AS userids
FROM table1 A
group by group_id
) T2
on T1.group_id = T2.group_id
关于php - MySQL group_concat 并与另一个 group_concat 嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063932/