2010-09-24 18 views
20

Ist es möglich, eine MySQL-Datenbank abzufragen, um die Spaltennamen einer Tabelle in alphabetischer Reihenfolge zu erhalten? Ich weiß, dassmysql Tabellenspaltennamen in alphabetischer Reihenfolge abrufen

SHOW COLUMNS `table_name`; 

oder

DESCRIBE `table_name`; 

gibt mir eine Liste der Spalten in einer Tabelle (zusammen mit anderen Informationen), aber ist es möglich, die Abfrage zu ändern, um die Spalten zu erhalten alphabetisch sortiert Das Hinzufügen von ORDER BY 'Field' funktionierte nicht, es gab einen Syntaxfehler.

Antwort

26

Die ANSI INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS) bieten mehr Flexibilität in 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

Arbeitete gut, würde wieder verwenden. Kannst du mir sagen, warum die c.table_schema-Bedingung dort ist, weil sie ohne sie zu funktionieren schien? –

+0

@ John Scipione: Der Doppelstrich "-" ist ein Kommentar in SQL; Das table_schema ist aus der Abfrage auskommentiert. Entfernen Sie den Doppelstrich, damit er in der Anweisung ausgewertet wird. –

3

Jedes Feld wurde zweimal aufgeführt, bis ich 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

verwendet Wenn Sie weitere Informationen wünschen, unter Abfrage wirklich praktisch ist:

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; -- 
Verwandte Themen