2010-09-24 11 views
20

È possibile interrogare un database MySQL per ottenere i nomi delle colonne di una tabella in ordine alfabetico? So chemysql ottiene i nomi delle colonne delle tabelle in ordine alfabetico

SHOW COLUMNS `table_name`; 

o

DESCRIBE `table_name`; 

mi darà una lista delle colonne di una tabella (insieme ad altre informazioni), ma è possibile modificare la query in modo da ottenere le colonne ordinato alfabeticamente. L'aggiunta di ORDER BY "Field" non ha funzionato, ha generato un errore di sintassi.

risposta

26

L'ANSI INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS) fornire maggiore flessibilità 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

Ha funzionato alla grande, avrebbe usato di nuovo. Puoi dirmi perché la condizione di c.table_schema è lì, perché sembra che funzioni senza di essa. –

+0

@John Scipione: il doppio trattino "-" è un commento in SQL; table_schema è commentato dalla query. Rimuovere il doppio trattino per essere valutato nella dichiarazione. –

3

Ogni campo è stato elencato due volte fino a quando ho usato 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

Se volete maggiori dettagli, di seguito query è davvero a portata di mano:

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; -- 
Problemi correlati