Каков самый чистый способ сортировки результатов запроса "описать таблицу"?

Я работаю над выходом "описать таблицу", чтобы показать список полей и их типов, я хочу, чтобы мои первичные ключи были в верхней части списка. Я думаю, что нет способа отсортировать результаты с использованием SQL (что-то вроде "order by" ), а не сортировать его в PHP.

Как вы думаете, ребята? спасибо

Ответ 1

Ты прав. MySQL всегда будет выводить столбцы в их фактическом порядке - то есть порядок, который они физически хранят в данных таблицы.

Вы можете физически перемещать столбцы внутри своей таблицы, чтобы первичные ключи были первыми, хотя для этого потребуется, чтобы MySQL заблокировал таблицу и переписал все ее данные в новом порядке. Это почти никогда не стоит.

Если вам просто интересно представить отличный вывод, независимо от того, как на самом деле структурирована таблица, вы действительно можете отсортировать столбцы в PHP, возможно, используя простой вызов usort().

Ответ 2

Когда вы делаете SHOW COLUMNS или DESCRIBE TABLE, вы на самом деле просто используете встроенную специальную базу данных под названием INFORMATION_SCHEMA для получения информации об именованной таблице. Забавно то, что кажется, что она не возвращает информацию в виде таблицы, поэтому невозможно заставить данные, возвращаемые этими функциями, действовать как таблица (для сортировки, запроса и т.д.).

К счастью, вы можете настроить свой собственный запрос для выполнения того же поиска, что и SHOW или DESCRIBE:

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;

Ответ 3

Не используйте описание, но используйте таблицы информации схемы, которые предоставляются большинством dbms. Затем вы можете использовать простые выборки, чтобы получить информацию.