2010-09-24 27 views
20

是否可以查詢MySQL數據庫以按字母順序獲取表的列名?我知道mysql按字母順序獲取表列名

SHOW COLUMNS `table_name`; 

DESCRIBE `table_name`; 

給我列一個清單,在表格(連同其他信息),但它是可以改變的查詢,以獲得列按字母順序排序。添加ORDER BY'Field'不起作用,它給出了語法錯誤。

回答

26

的ANSI INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS)在MySQL提供了更多的靈活性:

SELECT c.column_name 
    FROM INFORMATION_SCHEMA.COLUMNS c 
WHERE c.table_name = 'tbl_name' 
-- AND c.table_schema = 'db_name'  
ORDER BY c.column_name 
+0

工作很好,會再次使用。你能告訴我爲什麼c.table_schema條件存在,但因爲它似乎沒有它的工作。 – 2010-09-24 22:55:07

+0

@John Scipione:雙破折號「 - 」是SQL中的註釋; table_schema從查詢中被註釋掉。刪除它在報表中評估的雙破折號。 – 2010-09-24 23:02:42

3

每場被列入兩次,直到我用group by column name

select c.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS c 
where c.TABLE_NAME = `'tbl_name'` 
group by c.column_name 
order by c.column_name 
2

如果您想了解更多的細節,下面的查詢是非常方便的:

SELECT COLUMN_NAME as 'Field', 
    COLUMN_TYPE as 'Type', 
    IS_NULLABLE as 'Null', 
    COLUMN_KEY  as 'Key', 
    COLUMN_DEFAULT as 'Default', 
    EXTRA   as 'Extra' 
    from INFORMATION_SCHEMA.COLUMNS 
    where TABLE_NAME = 'my table' and 
    TABLE_SCHEMA = 'my database' 
    add ordering 
    order by Type; --