2 回答
TA貢獻2080條經驗 獲得超4個贊
我不知道為什么你的輸出改變了,但我認為要得到你想要的輸出,你可以使用一個ORDER BY子句按序號位置排序。
ORDER BY c.ORDINAL_POSITION
當我在我自己的一個 MySQL 數據庫上運行您的查詢時,我在您的ed 列c.*列表中添加了一個。SELECT從顯示的所有額外列中,這ORDINAL_POSITION似乎就是您要查找的內容。
所以你的最終查詢可能看起來像這樣:
SELECT c.COLUMN_NAME as column_name,
c.COLUMN_TYPE as column_type,
c.CHARACTER_MAXIMUM_LENGTH as length,
c.TABLE_NAME as table_name,
c.COLUMN_COMMENT as column_comment,
k.REFERENCED_TABLE_NAME as reference_table,
k.REFERENCED_COLUMN_NAME as reference_column
FROM information_schema.COLUMNS as c
LEFT JOIN information_schema.KEY_COLUMN_USAGE as k
ON (k.TABLE_SCHEMA=c.TABLE_SCHEMA
AND k.TABLE_NAME=c.TABLE_NAME
AND k.COLUMN_NAME=c.COLUMN_NAME
AND k.POSITION_IN_UNIQUE_CONSTRAINT IS NOT NULL)
WHERE c.TABLE_SCHEMA='$db_name'
AND c.TABLE_NAME='$table_name'
ORDER BY c.ORDINAL_POSITION
TA貢獻1868條經驗 獲得超4個贊
SQL 表中沒有“默認”排序順序,至少沒有 ANSI 標準要求的排序順序(或者,正如您在此處看到的,由 MySQL 實現)。如果您希望結果集按特定順序排列,則應添加適當的ORDER BY子句,例如
SELECT
c.COLUMN_NAME as column_name,
c.COLUMN_TYPE as column_type,
...
ORDER BY
c.COLUMN_NAME;
至于為什么感知的排序順序發生了變化,可能與從數據庫中獲取記錄的方式有關。隨著底層數據的變化,MySQL 選擇訪問記錄的方式也可能發生變化。
- 2 回答
- 0 關注
- 183 瀏覽
添加回答
舉報
