2010-09-24 28 views
20

¿Es posible consultar una base de datos MySQL para obtener los nombres de las columnas de una tabla en orden alfabético? Sé quemysql obtener los nombres de las columnas de la tabla en orden alfabético

SHOW COLUMNS `table_name`; 

o

DESCRIBE `table_name`; 

me dará una lista de las columnas en una tabla (junto con otra información), pero ¿es posible alterar la consulta con el fin de obtener las columnas ordenados alfabéticamente Agregar ORDER BY 'Field' no funcionó, dio un error de sintaxis.

Respuesta

26

El ANSI INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS) proporcionan más flexibilidad en 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

Funcionó muy bien, volvería a usar. Sin embargo, puede decirme por qué la condición c.table_schema está allí porque parecía funcionar sin ella. –

+0

@John Scipione: El doble guión "-" es un comentario en SQL; table_schema está comentado desde la consulta. Elimine el doble guión para que se evalúe en la declaración. –

3

Cada campo se aparece dos veces hasta que use 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

Si desea más detalles, por debajo de consulta es muy práctico:

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; -- 
Cuestiones relacionadas