站点图标 久久日记本

从Select语句看SQL关键字的执行顺序

SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。
8、select 集合输出。

eg.获取新闻表(News)表中最近七天的数据,并将数据按浏览量(VisitedCount)排序,截取排行榜前6条。

方法一:

第一步:最近News表中最近七天的数据(AutoId:新闻编号,AddDate:发布时间):

select * from news where datediff(day,AddDate,getdate())<=7

第二步:按浏览量排序:

select * from news
where datediff(day,AddDate,getdate())<=7 
order by VisitedCount desc

第三步:截取前6条:

select top 6 * from news 
where datediff(day,AddDate,getdate())<=7 
order by VisitedCount desc

上面便是结果了。

注意这句话意思绝不是:截取最近七天中间6条信息,再按浏览量排序。注意各个关键字在SQL语句中解释顺序。

上述语句还可以写为:

答案2:

select top 6 * from news
where AutoId in
(
   select AutoId from news
   where datediff(day,AddDate,getdate())<=7
)
order by VisitedCount desc

PS: DESC降序 ASC升序

退出移动版