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

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

SHOW COLUMNS FROM tablename LIKE '%ColumnPrefix%';

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

有什么想法吗?

【问题讨论】:

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

标签: mysql sql sql-order-by


【解决方案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 对结果进行排序。

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 2011-06-13
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多