更新
我有一个表,其索引顺序为:
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
但这给了我列的排序。如何修改它以返回索引的顺序?
答案 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'