我想通过执行以下操作加入两个表 information_schema.COLUMNS 和 information_schema.KEY_COLUMN_USAGE :
SELECT
a.COLUMN_NAME AS name,
c.COLUMN_TYPE,
...
b.REFERENCED_TABLE_SCHEMA AS ref_db,
b.REFERENCED_TABLE_NAME AS ref_table,
b.REFERENCED_COLUMN_NAME AS ref_col
FROM
information_schema.COLUMNS AS a
LEFT JOIN
information_schema.KEY_COLUMN_USAGE AS b
ON
a.TABLE_SCHEMA = b.TABLE_SCHEMA
AND
a.TABLE_NAME = b.TABLE_NAME
AND
a.COLUMN_NAME = b.COLUMN_NAME
WHERE
a.TABLE_SCHEMA = 'my_db'
AND
a.TABLE_NAME = 'my_table'
不幸的是,MySQL会更改列在基础 information_schema.COLUMNS 表中的列序列,并在列表中列出那些实际上在 information_schema.KEY_COLUMN_USAGE中设置索引的列表。
在两个表中匹配的记录列在顶部的行为似乎是预期的行为。不过,我想保留基本 COLUMNS 表的序列。
切换表并使用RIGHT JOIN代替没有帮助。
ORDER BY原始输入序列有没有办法?
找到解决方案。只需编辑以下内容:
ORDER BY
a.ORDINAL_POSITION