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

时间:2010-06-11 12:40:37

标签: php mysql describe

我正在处理“描述表”输出以显示字段列表及其类型,我希望我的主键位于列表的顶部。 我认为没有办法使用SQL(类似'order by')来描述结果,而不是用PHP对它进行排序。

你觉得男人们怎么样? 感谢

3 个答案:

答案 0 :(得分:14)

当您执行SHOW COLUMNSDESCRIBE 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:感谢您鼓励我再次查看如何执行此操作。我曾经知道如何做到但已经忘记了。

答案 1 :(得分:2)

你是对的。 MySQL将始终按实际顺序输出列 - 也就是说,它们实际存储在表的数据中的顺序。

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

如果你只是想提出一个好的输出,无论表格的实际结构如何,你都可以用PHP对列进行排序,也许可以使用简单的usort()调用。

答案 2 :(得分:-2)

不要使用describe,而是使用大多数dbms提供的架构信息表。 然后,您可以使用简单的选择来获取您的信息。