34,576
社区成员
发帖
与我相关
我的任务
分享
select * from t
--取所有数据,返回无序集合
select top 5 * from t
--根据内部数据存储顺序取前5条,返回无序集合
select * from t order by pid desc
--取所有数据,按pid逆序返回有序列表
select top 5 * from t order by pid desc
--按pid逆序取前5条,返回无序集合
CREATE TABLE t
(
id INT IDENTITY,
[name] NVARCHAR(10),
pid INT
)
INSERT t
SELECT N'张三', 0 UNION ALL
SELECT N'李四', 0 UNION ALL
SELECT N'王五', 2
GO
--SQL:
select * from t order by pid desc
select top 5 WITH TIES * from t order by pid DESC
select top 5 * from t order by pid desc
--#1. 在没有WITH TIES选项时,对于相同的pid,返回的记录好像是倒序(不解)
--#2. 对于top, order by,保证排序记录唯一
SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。
另外:一个查询语句各个部分的执行顺序:
--8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
--(1) FROM <left_table>
--(3) <join_type> JOIN <right_table>
--(2) ON <join_condition>
--(4) WHERE <where_condition>
--(5) GROUP BY <group_by_list>
--(6) WITH {CUBE | ROLLUP}
--(7) HAVING <having_condition>
--(10) ORDER BY <order_by_list>