2010-03-30 18 views
11

que necesito para encontrar las columnas de una tabla específica, que no es ningún problema:Retorno orden de MySQL VER COLUMNAS

SHOW COLUMNS FROM tablename LIKE '%ColumnPrefix%'; 

Pero necesito saber qué orden en que serán devueltos, preferiblemente al optar por pedir la resultados ascendentes alfabéticamente No he tenido suerte con el uso de ORDER BY.

¿Alguna idea?

+0

¿Por qué necesita algo tan inusual en una caja negra como la estructura de una mesa? –

+0

¿Qué versión de MySQL estás usando? ¿Qué cliente estás usando, p. PHP? ¿Por qué no solo ordena las columnas en el cliente? –

+0

MySQL 4.0.16, que es un poco molesto, debe tener un juego con ordenarlo con PHP. El cerebro no está en marcha hoy parece (!) – rich

Respuesta

13

Puede consultar la tabla INFORMATION_SCHEMA.COLUMNS para obtener la información que SHOW COLUMNS le da, además de que le permite utilizar ORDER BY o cualquier otra sintaxis SQL es posible que desee utilizar:

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'tablename' 
    AND column_name LIKE 'ColumnPrefix%' 
ORDER BY column_name 
+1

+1 Buen punto: la base de datos INFORMATION_SCHEMA (desde 5.0) es probablemente la cosa más olvidada en MySQL. – Piskvor

+0

Estoy ejecutando la versión 4.0.16 de lo contrario, sería una excelente manera de hacer el trabajo. – rich

6

Ya que he tenido la exactamente el mismo problema, completaré la respuesta de Mark. Aquí está la versión exacta larga de los 'mostrar columnas de la tabla' consulta:

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`='mytable'; 

Con esta consulta se puede ordenar el resultado como desee mediante la adición de ORDER BY.