文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL SERVER 中 order by 字句的使用

SQL SERVER 中 order by 字句的使用

时间:2011-01-08  来源:EIJ_GNEP

我看书比较慢,今天刚看完 order by 字句的用法,觉得很深刻,所以动手写的详细一点。

 

1) 在讨论 order by 之前,首先我们要讨论一下 SQL SERVER 数据库中表数据是如何存放的。
    a) SQL SERVER 中,表是数据行的集合,而集合是没有顺序的,所以表中行数据的存放,是零散的。而各个行中的各个列的顺序是一致      的。
2)  接着,我们来讨论一下表表达式。
    a) 表表达式包括:视图、内联表值函数、派生表、公用表表达式(CTE)
    b) 表表达式是集合,数据行是无序的
3) 现在,我们来讨论 order by 字句。
    a) 与其他的阶段,如 join、where 不同, order by 字句返回的不是表,而是一个对象,这个对象里的各个行数据是按照某种顺序排列的,SQL SERVER 中称之为“游标”,所以不能用含有 order by 字句的子查询来定义表表达式。
    b) 当 order by 字句与 top 连用时,如果把这个 select 语句放在表表达式的定义中时, order by 作为 top 选择前 n 行数据的一种依据,而不是排序用,定义得到的表表达式中的数据也是无序的
    c) order by 字句与 distinct 之间的注意事项:
       当 select 语句中没有 distinct 子过程时,order by 字句可以使用 select 子过程的输入和输出(筛选或未筛选的或取别名的字段),即 vt4 和 vt5,因为此时,向 select 字句中添加表达式不会影响返回的行数;而如果指定了 distinct 字句,则使用 order by 字句时只能使用 select 子过程的输出 vt5。
如:select bgqx,bz,bzrq from fil23 order by copy;(通过)
    select distinct bgqx,bz,bzrq from fil23 order by copy;(报错,提示“如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中”)

 

哪位路过的大虾如果看出点毛病,拜求指点。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载