我们在我们的数据库中有一个视图,其中有一个ORDER BY.
现在,我意识到一般不要命令,因为不同的人可能会使用它的不同的东西,并希望有不同的订单.然而,该视图用于要求一定顺序的非常特殊的用例. (这是足球联赛的球队排名.)
现在,我意识到一般不要命令,因为不同的人可能会使用它的不同的东西,并希望有不同的订单.然而,该视图用于要求一定顺序的非常特殊的用例. (这是足球联赛的球队排名.)
数据库是Windows Server 2003 R2框上的sql Server 2008 Express,v.10.0.1763.0.
视图的定义如下:
CREATE VIEW season.CurrentStandingsOrdered AS SELECT TOP 100 PERCENT *,season.GetRanking(TEAMID) RANKING FROM season.CurrentStandings ORDER BY GENDER,TEAMYEAR,CODE,POINTS DESC,FORFEITS,GOALS_AGAINST,GOALS_FOR DESC,DIFFERENTIAL,RANKING
它返回:
GENDER,TEAMID,CLUB,NAME,WINS,LOSSES,TIES,GOALS_FOR,POINTS,RANKING
现在,当我针对视图运行SELECT时,它会按照GENDER,TEAMID命令结果.注意,按照order by子句指定,它是由TEAMID而不是POINTS排序的.
解决方法
ORDER BY子句视图返回的行的顺序是绝对不会保证的.如果您需要特定的行顺序,则必须指定从视图中选择的位置.
请参阅this Book On-Line条目顶部的注释.