当前位置: 首页 > 面试题库 >

在Sql Server 2008视图中执行ORDER BY

顾喜
2023-03-14
问题内容

我们在数据库中有一个视图,其中有一个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, TEAMYEAR, CODE, TEAMID, CLUB, NAME,  
WINS, LOSSES, TIES, GOALS_FOR, GOALS_AGAINST,  
DIFFERENTIAL, POINTS, FORFEITS, RANKING

现在,当我对视图运行 SELECT时 ,它按 GENDER,TEAMYEAR,CODE,TEAMID排序结果 。注意,它是按
TEAMID 排序的,而不是order by子句指定的 POINTS 的排序。

但是,如果我复制SQL语句并完全按照新查询窗口中的方式运行它,则它会按 ORDER BY 子句指定的顺序正确 排序


问题答案:

带有ORDER BY子句的视图返回的行的顺序永远无法保证。如果需要特定的行顺序,则必须指定从视图中选择的位置。

请参阅此联机丛书条目顶部的注释。



 类似资料:
  • 我有一个视图,它具有激活viewpager的表格布局,当查看页面时,它工作正常,但如果我单击该视图上的某个项目,然后返回到过去的屏幕,我会得到: Java.Lang.IllegalStateException:FragmentManager已经在执行事务。 不确定这是否有所不同,但当我离开这个视图时,我从一个片段变成了一个活动。

  • 问题内容: 我想在SQL Server中创建一个视图,该视图结合了几部分数据库元数据。 我想要的一个元数据保存在表中-relevent列如下: 如您所见,如果“文本”列中的数据超过最大长度(SQL Server中为8000字节/ 4000个字符,在我的示例中为12个字符),则该数据将分成多行。标识将文本重新组合在一起的顺序。 我想在我的视图中进行查询/子查询,以重新组合sys.syscomment

  • 我要求计算每个endpoint上的视图。其思想是为所有endpoint创建一个公共的请求计数映射,该映射应该基于动态输入的endpoint返回视图计数。 假设有人想检查上的视图计数。 null 我一直在讨论如何将发送到http://localhost:8080/actulator/metrics/http.server.requests?tag=uri:/user/101,并返回它的响应并获得计数

  • 英文原文:http://emberjs.com/guides/views/inserting-views-in-templates/ 到目前为止,我们已经讨论了如何为单独的视图编写模板。然而,随着应用开发的深入,为了封装页面上的不同区域,你可能会经常需要创建一个层次化的视图结构。每个视图负责处理事件和维护需要显示的属性。 {{view}} 为了将一个子视图添加到父视图中,可以使用{{view}}助

  • 问题内容: 我正在尝试由两个装饰器装饰Django视图,一个装饰器用于检查登录,另一个用于检查is_active。 第一个是内置的,第二个如下: 现在,Python中的装饰器可以由内而外工作,但是以下操作不起作用: 我想首先检查用户是否已登录,如果没有,请重定向到登录页面,如果他或她已登录,则要检查他或她是否处于活动状态,如果不是,则执行重定向到。 发生的情况是,如果login_required失

  • 问题内容: 我需要创建一个自动在结果中添加虚拟行号的视图。这里的图完全是随机的,我要实现的是动态创建的最后一列。 查询: 问题答案: 采用: 这不是理想的方式,因为将对返回的每一行执行num值查询。更好的主意是创建一个表,其中的一列包含一个从一个开始的数字,然后递增到一个非常大的数字,然后以类似于下面的变量示例的方式联接和引用该表。 MySQL排名,或缺乏 您可以定义一个变量以获得伪行号功能,因为