Sha*_*fiz 19 sql sorting alphabetical
我知道
SELECT * FROM Table
Run Code Online (Sandbox Code Playgroud)
将列出表中的所有列,但我有兴趣按字母顺序列出列.
说,我有三个栏目,"名字","年龄"和"性别".
我希望以格式组织列
|age| |name| |sex|
Run Code Online (Sandbox Code Playgroud)
是否可以使用SQL执行此操作?
pax*_*blo 13
是的,没有:-)
SQL本身并不关心列的出现顺序,但是,如果您要使用:
select age, name, sex from ...
Run Code Online (Sandbox Code Playgroud)
你会发现它们可能按照这个顺序出现(尽管我不确定SQL标准是否要求这样做).
现在你可能不想这样做,但有时生活不公平:-)
您还可以使用DBMS数据定义表动态构建查询.这是不可移植的,但大多数DBMS都提供这些表(例如DB/2 SYSIBM.SYSCOLUMNS),您可以按顺序从那里选择列名.就像是:
select column_name from sysibm.syscolumns
where owner = 'pax' and table_name = 'movies'
order by column_name;
Run Code Online (Sandbox Code Playgroud)
然后你使用的结果是查询构建真正的查询:
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.
Run Code Online (Sandbox Code Playgroud)
但是,您真的应该批判性地检查所有选择的查询*- 在绝大多数情况下,它是不必要的和低效的.数据的表示可能应该由表示层完成,而不是DBMS本身 - 应该留下DBMS以尽可能有效的方式返回数据.
May*_*pka 12
这将生成一个查询,其中所有列在select语句中按字母顺序排序.
DECLARE @QUERY VARCHAR(2000)
DECLARE @TABLENAME VARCHAR(50) = '<YOU_TABLE>'
SET @QUERY = 'SELECT '
SELECT @QUERY = @QUERY + Column_name + ',
'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TABLENAME
ORDER BY Column_name
SET @QUERY = LEFT(@QUERY, LEN(@QUERY) - 4) + '
FROM '+ @TABLENAME
PRINT @QUERY
EXEC(@QUERY)
Run Code Online (Sandbox Code Playgroud)