MySQL SHOW COLUMNS 的返回顺序

Posted

技术标签:

【中文标题】MySQL SHOW COLUMNS 的返回顺序【英文标题】:Return order of MySQL SHOW COLUMNS 【发布时间】:2010-03-30 11:34:20 【问题描述】:

我需要查找特定表中的列,这没问题:

SHOW COLUMNS FROM tablename LIKE '%ColumnPrefix%';

但我需要知道它们将按什么顺序返回,最好选择按字母顺序升序排列结果。我没有使用ORDER BY

有什么想法吗?

【问题讨论】:

为什么需要像表格结构这样的黑盒中的这种不寻常的东西? 您使用的是什么版本的 mysql?您正在使用什么客户端,例如php?为什么不在客户端对列进行排序? MySQL 4.0.16 有点痛苦,应该玩一下用 PHP 订购它。大脑今天似乎没有运转(!) 有什么原因不能将结果加载到程序中并在那里排序? 【参考方案1】:

您可以查询表 INFORMATION_SCHEMA.COLUMNS 以获取 SHOW COLUMNS 为您提供的信息,此外它还允许您使用 ORDER BY 或您可能想要使用的任何其他 SQL 语法:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tablename'
  AND column_name LIKE 'ColumnPrefix%'
ORDER BY column_name

【讨论】:

+1 好点 - INFORMATION_SCHEMA 数据库(自 5.0 起)可能是 MySQL 中最容易被忽视的有用的东西。 我正在运行 4.0.16 版,否则这将是完成这项工作的好方法。【参考方案2】:

由于我遇到了完全相同的问题,我将完成 Mark 的回答。 这是“显示表中的列”查询的确切长版本:

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`='mytable';

使用此查询,您可以通过添加 ORDER BY 对结果进行排序。

【讨论】:

以上是关于MySQL SHOW COLUMNS 的返回顺序的主要内容,如果未能解决你的问题,请参考以下文章

小白学习MySQL - Generated Columns功能

MySQL 5.7 虚拟列 (virtual columns)

INFORMATION_SCHEMA.COLUMNS 最初按字母顺序排序,几天后按 ORDINAL_POSITION 排序

mysql5.7查看表结构命令show full columns from t_user

Python璇诲彇mysql鏁版嵁锛岃浆涓篋ataFrame鏍煎紡骞舵牴鎹師TABLE涓殑COLUMNS鎸囧畾columns锛宨ndex

mysql InnoDB 索引小记