SQL 按字母顺序列出所有列名

标签 sql sorting alphabetical

我知道

SELECT * FROM Table

将列出表中的所有列,但我有兴趣按字母顺序列出这些列。

比如说,我有三列,“姓名”、“年龄”和“性别”。

我想要按格式组织的列
|age| |name| |sex|

可以用 SQL 做到这一点吗?

最佳答案

是的,也不是 :-)

SQL 本身并不关心列出现的顺序,但是,如果您要使用:

select age, name, sex from ...

你会发现它们可能是按这个顺序出现的(尽管我不确定 SQL 标准是否要求这样做)。

现在您可能不想这样做,但有时生活并不公平:-)

您还可以使用 DBMS 数据定义表来动态构建查询。这是不可移植的,但大多数 DBMS 提供这些表(例如 DB/2 的 SYSIBM.SYSCOLUMNS ),您可以从那里以有序的方式选择列名。就像是:
select column_name from sysibm.syscolumns
where owner = 'pax' and table_name = 'movies'
order by column_name;

然后使用该查询的结果来构建真正的查询:
query1 = "select column_name from sysibm.syscolumns" +
         " where owner = 'pax' and table_name = 'movies'" +
         " order by column_name"
rs = exec(query1)
query2 = "select"
sep = " "
foreach colm in rs:
    query2 += sep + colm["column_name"]
    sep = ", "
query2 += " from movies order by rating"
rs = exec(query2)
// Now you have the rs recordset with sorted columns.

但是,您确实应该仔细检查所有选择 * 的查询。 - 在绝大多数情况下,这是不必要且低效的。数据的表示可能应该由表示层完成,而不是 DBMS 本身——应该让 DBMS 以尽可能有效的方式返回数据。

关于SQL 按字母顺序列出所有列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075800/

相关文章:

mysql - 如何将 DATE 列默认为今天的日期

MySQL 仅更新 WHERE max()

php - 如何使用 PHP 和 MySQL 将 URL 类别编号更改为单词?

C - 将数组中的 char 字符串排序为等于 char 用户输入

C++ 外部冒泡排序

c++ - 在 C++ 中按字母顺序排序二叉搜索树

sql - 如何从 c 执行 DDL?

algorithm - 替代排序算法小于 O(nlog(n))

ruby - 如何获取下一个按字母顺序排列的unicode字符?

java - 对包含数字的字符串数组进行排序