Какой самый чистый способ сортировки результатов запроса «описать таблицу»? - PullRequest
9 голосов
/ 11 июня 2010

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

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

Ответы [ 3 ]

14 голосов
/ 11 июня 2010

Когда вы делаете 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: Спасибо, что дали мне стимул посмотреть, как это сделать снова.Когда-то я знал, как это сделать, но забыл.

2 голосов
/ 11 июня 2010

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

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

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

0 голосов
/ 11 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...