如何将GROUP_CONCAT列顺序放在哪里(多个值)?

问题描述 投票:0回答:1

我在下面给出的mysql代码是

 select GROUP_CONCAT(table_name,'.',column_name,'  as',table_name,'_',column_name) as column_list from INFORMATION_SCHEMA.COLUMNS where table_name in ('country_details','state_details', 'city_details');

我得到了下面给出的结果以city_details.id开头为city_details_id,..

结果(从city_details开始,country_details,state_details)

city_details.id为city_details_id,city_details.city_name为city_details_city_name,city_details.id为city_details_id,country_details.id为country_details_id,country_details.sortname为country_details_sortname,country_details.country_name为country_details_country_name,country_details.phonecode为country_details_phonecode,state_details.id为state_details_id,state_details。 state_name as state_details_state_name,state_details.country_id as state_details_country_id

预期结果(从country_details开始,state_details,city_details)

country_details.id为country_details_id,country_details.sortname为country_details_sortname,country_details.country_name为country_details_country_name,country_details.phonecode为country_details_phonecode,state_details.id为state_details_id,state_details.state_name为state_details_state_name,state_details.country_id为state_details_country_id,city_details.id为city_details_id,city_details。 city_name为city_details_city_name,city_details.state_id为city_details_state_id

我不知道如何解决这个问题所以请任何人指导我解决这个问题。

在这里,我使用下面给出的Order by Field代码也给出了相同的问题。

SELECT group_concat(table_name,'.',column_name,' as  ',table_name,'_',column_name) as column_list  FROM INFORMATION_SCHEMA.COLUMNS where table_name in ('country_details','state_details', 'city_details')ORDER BY FIELD(table_name,'country_details','state_details', 'city_details');
mysql sql-order-by aggregate-functions group-concat
1个回答
1
投票

查询末尾的ORDER BY不执行任何操作,因为查询只包含一个结果行。 (除非查询具有GROUP BY子句,否则任何具有COUNT或GROUP_CONCAT等聚合函数的查询将只包含一行。)

但是,您可以将ORDER BY放在GROUP_CONCAT聚合函数中。像这样:

SELECT GROUP_CONCAT(
             table_name,'.',column_name,' as  ',table_name,'_',COLUMN_NAME 
             ORDER BY FIELD(table_name,'country_details','state_details', 'city_details'), 
                      ordinal_position 
       ) AS column_list
  FROM INFORMATION_SCHEMA.columns
 WHERE table_name IN ('country_details','state_details', 'city_details')

(使用ordinal_position命令将每个表的列按照它们在表定义中出现的顺序排列。)

© www.soinside.com 2019 - 2024. All rights reserved.