我知道
SELECT * FROM Table
将列出表中的所有列,但我有兴趣按字母顺序列出这些列。
说,我有三列,“姓名”,“年龄”和“性别”。
我希望这些列以以下格式组织
|age| |name| |sex|
是否可以使用SQL做到这一点?
是的,没有:-)
SQL本身并不关心列的排列顺序,但是,如果要使用的话:
select age, name, sex from ...
您会发现它们可能按此顺序出现(尽管我不确定SQL标准是否要求这样做)。
现在您可能 不想 这样做,但有时生活不公平:-)
您还可以使用DBMS数据定义表动态构建查询。这是不可移植的,但是大多数DBMS都提供了这些表(例如DB / 2的表SYSIBM.SYSCOLUMNS),您可以从那里以有序的方式选择列名。就像是:
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以尽可能有效的方式返回数据。
*