排序"描述表"查询结果的最简洁方法是什么?

You*_*sef 11 php mysql describe

我正在研究"描述表"输出以显示字段列表及其类型,我希望我的主键位于列表的顶部..我认为没有办法使用SQL对描述结果进行排序(类似'命令'通过')而不是在PHP中排序.

你们觉得怎么样 ?谢谢

amp*_*ine 16

当你执行a SHOW COLUMNS或a时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;
Run Code Online (Sandbox Code Playgroud)

OP除了:感谢您激励我再次查看如何做到这一点.我曾经知道怎么做但却忘记了.

  • 对于任何运行此操作的人来说,可能是显而易见的:确保将''table'替换为您想要描述的表的名称,并将''database'替换为它所在的数据库的名称. (2认同)

Vot*_*ple 3

你是对的。MySQL 将始终按照其实际顺序 \xe2\x80\x94\xc2\xa0 输出列,即它们在表数据中物理存储的顺序。

\n\n

您可以在表中物理移动列,以便主键位于第一位,但这需要 MySQL 锁定表并按新顺序重写其整个数据。这几乎是不值得的。

\n\n

如果您只是对呈现良好的输出感兴趣,无论表的实际结构如何,您确实可以在 PHP 中对列进行排序,也许使用一个简单的usort()调用。

\n