Каков самый чистый способ сортировки результатов запроса "описать таблицу"?
Я работаю над выходом "описать таблицу", чтобы показать список полей и их типов, я хочу, чтобы мои первичные ключи были в верхней части списка.
Я думаю, что нет способа отсортировать результаты с использованием 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.
Затем вы можете использовать простые выборки, чтобы получить информацию.