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