MySQL:LEFT JOIN后列的顺序发生变化

时间:2015-08-26 12:15:56

标签: mysql join key schema

我想通过执行以下操作加入两个表 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

0 个答案:

没有答案