这算不算是sql-server2005的bug

runrunrun 2006-12-21 04:39:33
在视图里写了一个查询语句,并用order by对查询出的结果排序。
但是在sql-server的企业管理器里点击那个查询语句,并在右键菜单中选择“打开视图”,出来的结果却是无序的。如果在视图的编辑窗口中点击那个执行按钮,查询出来的结果是好的。
这也就罢了,最要命的是在程序中调用这个视图,出来的结果全是无序的。
这怎么办呀,程序用access时是好的,移植到sql-server下就乱了套了
...全文
166 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
runrunrun 2006-12-21
  • 打赏
  • 举报
回复
是呀,不知道为什么非要加个top。
top (100) percent 和排序又有什么关系
iacpdj 2006-12-21
  • 打赏
  • 举报
回复
问题估计这样


其实你这边100 percent就等于全部返回
而全部返回就等于不写
另外如果你的SELECT里面不写TOP,又要用ORDER是不能创建VIEW的
----
Msg 1033, Level 15, State 1, Procedure v_t1, Line 5
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.
----
矛盾估计就在这边了。
runrunrun 2006-12-21
  • 打赏
  • 举报
回复
呵呵,我改成 SELECT TOP 10000000 就好了。把这个bug报告给MS,会不会给我赏金呀
iacpdj 2006-12-21
  • 打赏
  • 举报
回复
问题也不在主键上
我去掉主键问题仍然存在
iacpdj 2006-12-21
  • 打赏
  • 举报
回复
For my test, it is really a little bit wired~~
--
CREATE TABLE [dbo].[t1](
[ID] [int] NOT NULL,
[index] [int] NULL,
CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

insert t1 values(1,1)
insert t1 values(2,12)
insert t1 values(3,13)
insert t1 values(5,5)
insert t1 values(6,16)
insert t1 values(7,7)

create view v_t1
as
SELECT TOP (100) PERCENT ID, [index]
FROM dbo.t1
ORDER BY [index]
go

select * from v_t1
---
ID index
1 1
2 12
3 13
5 5
6 16
7 7
runrunrun 2006-12-21
  • 打赏
  • 举报
回复
问题居然在 SELECT TOP (100) PERCENT 上,我把100改成了1到99之间的任意值结果都是对的,就是 100不对。

现在我只能把视图改成
SELECT TOP 10000000 ID, [index]
FROM dbo.xxxTable_1
ORDER BY [index]


faint~~~~ 怎么会有这么低级的错误
rookie_one 2006-12-21
  • 打赏
  • 举报
回复
mark一下,明天看结果
tmc1703 2006-12-21
  • 打赏
  • 举报
回复
关注
runrunrun 2006-12-21
  • 打赏
  • 举报
回复
在程序里直接打开这个视图,也是按ID排序的。
救命呀,千算万算,没想到sql-server有问题
青锋-SS 2006-12-21
  • 打赏
  • 举报
回复
关注
runrunrun 2006-12-21
  • 打赏
  • 举报
回复
上面如果直接在右键菜单中选打开视图,出来的结果还是按ID排序的
runrunrun 2006-12-21
  • 打赏
  • 举报
回复
是真的,我刚做了个简单的例子。
一个表,两列:
ID 主键,整数
index, 整数

值如下:
ID index
1 1
2 12
3 13
5 5
6 16
7 7

view语句:
SELECT TOP (100) PERCENT ID, [index]
FROM dbo.t1
ORDER BY [index]
mjtalhx 2006-12-21
  • 打赏
  • 举报
回复
我也想知道结果!
marco08 2006-12-21
  • 打赏
  • 举报
回复
不可能吧

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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