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

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

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

3 ответа

Решение

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

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

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

Когда вы делаете 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;

Помимо OP: Спасибо, что дали мне стимул посмотреть, как сделать это снова. Я когда-то знал, как это сделать, но забыл.

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

Другие вопросы по тегам