mysql - 如何使用 group_concat 合并 2 个单独的查询并按特定字段分组

标签 mysql group-by concatenation multiple-select

我使用 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)

上述查询给出的结果如下,

enter image description here

我无法实现以下目标,

现在我想知道如何通过连接(合并或加入)“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/

相关文章:

python - 如何使用 pandas 模块合并(即 'concat' )100+ .csv 文件?

android - Android Studio 中连接两列并更新到另一列的正确语法是什么

mysql - 在Docker容器中初始化MySQL数据

php - 如何使用 SHOW DATABASE LIKE 语句获取查询?

mysql - 显示分组依据的所有行

sql - 如何按以下别名列分组

mysql - mysql中如何划分和舍入?

php - 一个同时使用elasticsearch和mysql的app

sql - 查找每个 GROUP BY 结果中的行数

mysql - Concat 在 MySQL 中不起作用