为何这两种查询的结果不一样?

linhl 2008-04-09 03:07:20
对一张表进行统计,一种是直接select出来,一种是先把select的结果insert into到临时表中,再从临时表中select出来,为何这两种得出的结果不一样?

第一种:
select top 3  '杂志分析','1','杂志下载最多',ObjectID,count(ObjectID) mcount,
(select ml.[Name] from MagazineDetail md inner join MagazineList ml on md.MagazineCode=ml.Code where md.Code=#userb1.ObjectID) as mname
from #userb1
where EventName='DownloadMagazine'
group by ObjectID
order by mcount desc



第二种:
create table #result(
[td0] [int] IDENTITY (1, 1) NOT NULL ,
[td1] [nvarchar] (150) NULL,
[td2] [nvarchar] (150) NULL,
[td3] [nvarchar] (150) NULL ,
[td4] [nvarchar] (150) NULL ,
[td5] [nvarchar] (150) NULL ,
[td6] [nvarchar] (150) NULL
)

insert into #result (td1,td2,td3,td4,td5,td6)
select top 3 '杂志分析','1','杂志下载最多',ObjectID,count(ObjectID) mcount,
(select ml.[Name] from MagazineDetail md inner join MagazineList ml on md.MagazineCode=ml.Code where md.Code=#userb1.ObjectID) as mname
from #userb1
where EventName='DownloadMagazine'
group by ObjectID
order by mcount desc

select * from #result order by td0
drop table #result
...全文
84 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
linhl 2008-04-09
谢9楼
回复
xiaoliaoyun 2008-04-09

create table #result(
[td0] [int] IDENTITY (1, 1) NOT NULL ,
[td1] [nvarchar] (150) NULL,
[td2] [nvarchar] (150) NULL,
[td3] [nvarchar] (150) NULL ,
[td4] [nvarchar] (150) NULL ,
[td5] [nvarchar] (150) NULL ,-- ===>这里改为int
[td6] [nvarchar] (150) NULL
)

回复
flairsky 2008-04-09
这...

我没看出门道来,呼唤达人
回复
linhl 2008-04-09
查询结果如下

第一种:

杂志分析 1 杂志下载最多 All155_doker_Stilejiaju14 581 STILE 家居
杂志分析 1 杂志下载最多 All277_6 556 中国国家地理
杂志分析 1 杂志下载最多 All80_doker_dipai14 500 迪派影像世界


第二种:

1 杂志分析 1 杂志下载最多 All155_doker_Stilejiaju05 99 STILE 家居
2 杂志分析 1 杂志下载最多 All155_doker_Stilejiaju09 97 STILE 家居
3 杂志分析 1 杂志下载最多 All31_doker_wo31 97 男人志
回复
xiaoliaoyun 2008-04-09
结果是怎样的?是否mcount都是一样的?改为order by mcount desc,ObjectID再看看结果是否一致
回复
linhl 2008-04-09
现在这两种查询出来的结果是完全不同的三条记录,而不是结果集的顺序不一样
回复
linhl 2008-04-09
[Quote=引用 1 楼 flairsky 的回复:]
select * from #result order by td0

你重新按td0排序了?
就这么简单?
[/Quote]

插入到临时表中的只是统计出来的top 3,所以排不排序并不会有什么大影响,而现在这两种查询出来的结果是完全不同的三条记录
回复
-狙击手- 2008-04-09
排序问题
回复
正宗老冉 2008-04-09
只不过结果集的顺序不一样而已。

回复
flairsky 2008-04-09
select * from #result order by td0

你重新按td0排序了?
就这么简单?
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-09 03:07
社区公告
暂无公告