标题:一个关于排序的奇怪问题【已解决】
取消只看楼主
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
结帖率:100%
 问题点数:0 回复次数:3 
一个关于排序的奇怪问题【已解决】
问题是这样产生的,在知道一个表名的时候,我想分别把表中的字段显示出来
以NorthWind中的Employees表为例
于是写了如下代码
程序代码:
select top 1 name from (
    select top 4 * from syscolumns where id=(
        select id from sysobjects where xtype='U' and name='Employees') 
    order by name asc )t
order by name desc

此查询的结果是将employees表中的字段作为字符串进行排序,并查出排在第四位的字段的名称
可是对倒数第二行后边的关键字t很是疑惑,不知道该字到底起什么作用?
奇怪的是t字去掉之后就会报错

消息 156,级别 15,状态 1,第 5 行
关键字 'order' 附近有语法错误。


本来我以为这个是关键字,后来经过反复试验,发现只要在这里随便写上一个字母就可以成功执行,这个字母到底起到什么作用?这可是随手乱写的……
但是不写这个字母它就报错,真是晕了
PS:我用的是SQL Server 2005

[[it] 本帖最后由 天堂落日 于 2008-1-28 17:51 编辑 [/it]]
2008-01-28 00:45
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
得分:0 
我说的排序就是说把'Employees'中的字段按照字母从a-z的数序排出来
Address
BirthDate
City
Country
EmployeeID
Extension
FirstName
HireDate
HomePhone
LastName
Notes
Photo
PhotoPath
PostalCode
Region
ReportsTo
Title
TitleOfCourtesy

[[it] 本帖最后由 天堂落日 于 2008-1-28 00:55 编辑 [/it]]

2008-01-28 00:54
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
得分:0 
问题如上,我换了种写法
select top 1 name from (
    select top 2 * from syscolumns where id=(object_id(N'Employees'))
    order by name )t
order by name desc

还是必须在倒数第二行加上一个无关字符,到底是为什么啊?

2008-01-28 01:04
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
得分:0 
原来如此啊
谢谢啦

2008-01-28 17:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-198905-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.145568 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved