按ordinal_position排序的订单未产生预期的输出

时间:2018-11-21 20:01:02

标签: mysql mysql-workbench

更新

我有一个表,其索引顺序为:

fsym_id, currency, x, y, z,

和按顺序排列的列

currency, fsym_id, x, y, z

我想以正确的顺序提取索引的名称。

我尝试执行以下操作:

set session group_concat_max_len = 1000000;
select GROUP_CONCAT(CONCAT("'",COLUMN_NAME,"'"))
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table'
AND TABLE_SCHEMA = 'schema'
ORDER BY ORDINAL_POSITION

但这给了我列的排序。如何修改它以返回索引的顺序?

1 个答案:

答案 0 :(得分:1)

如果要对GROUP_CONCAT()中的值进行排序,则必须在该函数中放置ORDER BY选项。您的ORDER BY子句用于对行进行排序;因为您只返回一行,所以它无效。

此外,也不必在CONCAT()内使用GROUP_CONCAT()。如果您提供多个值,它们将被自动串联。

select GROUP_CONCAT("'",COLUMN_NAME,"'" ORDER BY ORDINAL_POSITION)
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table'
AND TABLE_SCHEMA = 'schema'