相同的查询 只是查询的字段不同缺出现数据不一?为什么呢?

hertcloud 2005-12-29 09:57:45
select top 12 id,
filetitle, iscopyright, isCommend, nickname, userid, addtime
from VIEW_VoxMusicList
order by visitcount ASC

select top 12 id
from VIEW_VoxMusicList order by visitcount ASC
这里两个查询只是字段的多少不一样
却出现了不一样的ID数据 为什么呢?
VIEW_VoxMusicList视图如下
SELECT dbo.VOX_MyMusic.id AS musicid, dbo.VOX_MyMusic.filetitle,
dbo.VOX_MyMusic.iscopyright, dbo.VOX_MyMusic.visitcount,
dbo.VOX_MyMusic.evaluate, dbo.VOX_MyMusic.isCommend,
dbo.VOX_User.nickname, dbo.VOX_MyMusic.userid,
dbo.VOX_MyMusic.addtime
FROM dbo.VOX_MyMusic INNER JOIN
dbo.VOX_User ON dbo.VOX_MyMusic.userid = dbo.VOX_User.id
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hertcloud 2005-12-29
  • 打赏
  • 举报
回复
怎么没人 顶。。。。。
hertcloud 2005-12-29
  • 打赏
  • 举报
回复
第一个查询的ID列
1132
1178
1135
1396
1383
1550
1552
1553
1554
1556
1557
1548
第二个查询的ID列
1132
1178
1135
1396
904
906
907
908
916
918
920
962

为什么会不一样呢?
DreamStrat 2005-12-29
  • 打赏
  • 举报
回复
order by visitcount ASC
1:字段visitcount并非是你的关键字,所以依此排序的结果会存在不确定性(主要是因为在TOP 12条记录中存在visitcount相同的数据)
2:因为第一个语句select了一些VOX_User表的数据,这时的TOP 12是关联了之后再进行排序的数据,当存在visitcount相同的数据按此排序时,并不一定会按物理的存储顺序出现;而第二个select语句,SQL对其进行了优化操作,实际只从VOX_MyMusic表中取了数据 (实际上执行SQL操作也不同)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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