我正在处理“描述表”输出,以显示字段及其类型的列表,我希望我的主键能够在列表顶部。 我认为没有办法使用SQL(例如'order by')对描述结果进行排序,而只能在PHP中进行排序。
你们觉得呢? 谢谢
当你使用 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 COLUMN_TYPE;
你说得没错。MySQL 总是按照它们在表数据中实际存储的顺序输出列。
你可以在表内移动列,以便主键首先出现,但这将需要 MySQL 锁定表并以新顺序重写整个数据。这几乎永远不值得。
如果你只是想呈现漂亮的输出,而不管表的实际结构如何,你确实可以在 PHP 中对列进行排序,可以使用简单的usort()
调用。
不要使用描述,而是使用大多数数据库管理系统提供的模式信息表。然后,您可以使用简单的选择语句来获取您的信息。
order by
。 - Drew