一尘不染

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

sql

我知道

SELECT * FROM Table

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

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

我希望这些列以以下格式组织

|age| |name| |sex|

是否可以使用SQL做到这一点?


阅读 175

收藏
2021-03-10

共1个答案

一尘不染

是的,没有:-)

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以尽可能有效的方式返回数据。

2021-03-10