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

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
...全文
141 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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排序了?
就这么简单?

34,838

社区成员

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

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