我使用 UNION 进行 2 个单独的 Mysql 查询,查询如下。
select country,u_id from
(SELECT regionShortName as country , GROUP_CONCAT( urls_regions.u_id ) AS
u_id
FROM urls_regions
where LENGTH(regionShortName )<=2
GROUP by regionShortName)
UNION
(SELECT countries.name as country,
GROUP_CONCAT( urls_regions.u_id ) AS u_id
FROM `countries` countries
inner join regions on countries.regions_id = regions.id
INNER JOIN urls_regions ON regions.region = urls_regions.regionShortName
GROUP by countries.name, country)
上述查询给出的结果如下,
我无法实现以下目标,
现在我想知道如何通过连接(合并或加入)“u_id”按“国家/地区”进行分组“u_id”
我的查询实现是正确的方法还是有其他方法可以实现此目的。
最佳答案
使用下面的查询我能够得到我所期望的,
select tb.country, GROUP_CONCAT(tb.u_id, ',') from
((SELECT regionShortName as country , GROUP_CONCAT( urls_regions.u_id ) AS
u_id
FROM urls_regions
where LENGTH(regionShortName )<=2
GROUP by regionShortName)
union
(SELECT countries.name as country,
GROUP_CONCAT(urls_regions.u_id ) AS u_id
FROM `countries` countries
inner join regions on countries.regions_id = regions.id
INNER JOIN urls_regions ON regions.region = urls_regions.regionShortName
GROUP by countries.name, country)) tb group by tb.country
我做了两件事 在我的第一行查询中,我添加了 GROUP_CONCAT(tb.u_id, ',')
在最后一行添加group by tb.country
关于mysql - 如何使用 group_concat 合并 2 个单独的查询并按特定字段分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38495199/