SQL 2005 视图排序问题

CoffeeShop 2006-11-24 11:42:17
在SQL2005里建立的一个视图要求按某个字段排序。具体如下:

视图名:V_Test
select top (100) percent xh as 序号,name as 名字,fl as 分类 from test where fl='1' order by 序号

这个在查询分析器里打开之后没有按要求排序:
select 序号,名字,分类 from V_test

如果在查询分析器里在加上排序的话就可以:
select 序号,名字,分类 from V_test order by 序号

这个视图在SQL2000里用是正常的,在SQL2005里有没有别的解决方法。
...全文
477 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CoffeeShop 2006-11-28
  • 打赏
  • 举报
回复
我知道这样的。。我就想问一下。除了查询本身指定ORDER BY 之外的,其它方法。不过还是蛮谢谢你们的。
zjcxc 2006-11-25
  • 打赏
  • 举报
回复
楼主不看说明的? 已经说了2005的视图中的order by 行为已经调整过了嘛.



注意:
ORDER BY 子句仅用于确定视图定义中的 TOP 子句返回的行。ORDER BY 不保证在查询视图时得到有序结果,除非在查询本身中也指定了 ORDER BY。
happydreamer 2006-11-24
  • 打赏
  • 举报
回复
在外面再套一层
select 序号,名字,分类 from V_test order by 序号
zjcxc 2006-11-24
  • 打赏
  • 举报
回复
上面的sql 2005联机帮助中的原话.

可以看到, 视图中的order by 功能, 在2005中已经改变了(2000中没有注意的那段)
zjcxc 2006-11-24
  • 打赏
  • 举报
回复
视图定义中的 SELECT 子句不能包括下列内容:

COMPUTE 或 COMPUTE BY 子句


ORDER BY 子句,除非在 SELECT 语句的选择列表中也有一个 TOP 子句。

注意:
ORDER BY 子句仅用于确定视图定义中的 TOP 子句返回的行。ORDER BY 不保证在查询视图时得到有序结果,除非在查询本身中也指定了 ORDER BY。
marco08 2006-11-24
  • 打赏
  • 举报
回复
不可能吧
CoffeeShop 2006-11-24
  • 打赏
  • 举报
回复
感谢 邹建,重返csdn 二位,你们说的我清楚,在视图里我已经加了top (100) percent ,不过还是不行。在外面再套一层,这个方法我也清楚。我想要的是不在外面在套一层可以排序。我这个视图在SQL2000里运行正常,但在SQL2005就不行了。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧