SQL中关于with as语句中包含order by的一些疑问

例1:

 select top 100 percent * from paper
 order by time desc

例2:

 with
 t as
 (select top 100 percent * from paper
 order by time desc)
 select * from t

例3:

 with
 t as
 (select top 100 percent * from paper)
 select * from t order by time

其中,例1和例3得到的结果一样,但是例2得到的结果就没有对时间进行排序,
求大神看到了解释一下,最好能告诉我原理。。。

4个回答

1和3都是 外层最后 得出结果集的 排序,而第二种是 内层 嵌套的,已经被筛选了一下,最后 还得看外层的得出的结果集

猜想:
with
t as
(select top 100 percent * from paper
order by time desc)
select * from t

select top 100 percent * from paper
order by time desc
这句,已经对里面的结果排序了,然后再执行select * from t的时候,又对里面的数据默认进行了默认的排序,所以。。。
等待大婶粗现

例一和例三是外层排序后查询出结果,而例二是内层排序后,然后执行外面时,是默认的排序!

写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order......
答案就在这里:sql语句select group by order by where一般先后顺序
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐