Я продолжаю работать, "описывают таблицу" вывод для показа списка полей и их типов, я хочу, чтобы мои первичные ключи были наверху списка.. Я думаю, что нет никакого способа отсортировать результаты describe с помощью SQL (что-то как 'порядок') вместо того, чтобы сортировать его в PHP.
что Вы думаете парни?спасибо
Вы правы. 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;