在解释视图为什么不能用order by时,SQL Server技术内幕中有这么一句:定义视图查询中在没有top或for xml说明符的情况下不能包含order by子句,这是因为视图被认为表示一个表,表是一个逻辑实体,它的行没有顺序,不同于游标,游标是一个物理对象,它可以对行排序.这句话不能理解?
还有如果说表是一个逻辑实体,它的行没有顺序,那为什么select id,name from ct order by id可以成功地排序呢?
还有如果说表是一个逻辑实体,它的行没有顺序,那为什么select id,name from ct order by id可以成功地排序呢?
解决方案 »
- ##求一SQL语句,比较简单
- SQLServer是怎么了?同一时间精确到毫秒,插入了两条同样的数据?
- 怎样往一个表里插入另一个表的内容时手动添加一个字段的内容?
- 怎样只获得时间类型的日期而不要时间
- 调用返回表值的用户定义函数,为何参数不能使用表达式?
- dbreindex 和 ALTER INDEX ALL ON sales REORGANIZE WITH (LOB_COMPACTION = ON) 的不同
- 如何将一个表中的某一个字段值相同的记录查出来
- 请教关于MSDE的问题。
- 怎么样用。NET调试远端数据库上的存储过程?
- 帮忙看下这个问题
- 面某小公司DBA考到的三道数据库比试题
- 外键也必须是唯一性约束吗?
定义视图的时候不用order by,但是使用视图的时候可以order by 。把视图当成表就可以了。
例如table要排序的时候。order by就可以了,没见过create table的时候里面加上order by 的。关于第二个问题:
它的行本身之间是没有固定顺序的,但是我们得到数据的时候用order by 后就有了顺序了。例如一个班级的学生本来是没有顺序的
如果我们按照成绩排名,他们就有了顺序。
如果我们按照身高排名,他们也有了顺序 。
这个顺序取决于你order by 后面的参数。
+1Sql Server存储引擎在存储表时,是用堆来存储的,方便快速写入,堆是无序结构,读取效率低,所以才映入了索引来提高读取效率