- 在SQL Server中有关于限制返回行数的知识点总结:
- SELECT TOP语句用于限制查询结果集中返回的行数或行百分比。
注意:由于存储在表中的行的顺序是未知的,不可预测的,因此SELECT TOP语句一定要与ORDER BY 字句一起使用,其查询结果集限于前N个有序行数。
Eg:
SELECT TOP(expression) [PERCENT]
[WITH TIES]
FROM
Table_name
ORDER BY
Column_name;
在上图示例中,SELECT语句可以包含其它字句,如WHERE,JOIN,HAVING和GROUP BY。
(1)expression - TOP关键字后面是一个表达式,它指定要返回的行数。 如果使用PERCENT,则将表达式计算为浮点值,否则将其转换为BIGINT值。
(2)PERCENT - PERCENT关键字指示查询返回前N个行百分比,其中N是表达式的结果。(3)WITH TIES - WITH TIES用于返回更多行,其值与有限结果集中的最后一行匹配。注意: WITHTIES可能会导致返回的行数多于在表达式中指定的行数。
2. TOP的使用方式:
(1)使用具有恒定值的TOP,以下示例使用常量值返回前10个最贵的产品:
Eg:
SELECT TOP 10
Product_name,
List_price
FROM
Production.products
ORDER BY
List_price DESC;
(2)使用TOP返回行的百分比,使用percent指定结果集中返回的数值为百分数,数值的百分之一是分数值。
(3)使用TOP WITH TIES通常用于返回某个表最贵(便宜),最高(低)数值的前几个产品,与最后一行的值的匹配的行。
二、SQL Server Offset Fetch字句:
1.OFFSET和FETCH字句是ORDER BY字句的ORDER BY字句的选项。用于限制查询返回的行数。必须将OFFSET和FETCH字句宇ORDER BY字句一起使用。
注意:OFFSET和FETCH字句比实现TOP字句更适合实现查询分页解决方案。
Eg:
ORDER BY column_list[ASC|DESC]
OFFSET offset_row_count {Row|ROWS}
FETCH{FIRST|NEXT} fetch_row_count{ROW|ROWS}ONLY
(1)在以上示例中,OFFSET字句指定在开始从查询返回行之前要跳过的行数。offset_row_count可以是大于或等于零的常量,变量或参数。
(2)FETCH字句指定在处理OFFSET子句后要返回的行数。Off_row_count可以是大于或等于1的常量,变量或标量。
(3)OFFSET字句是必需的,而FETCH字句是可选的。此外,FIRST和NEXT是同义词,因此可以互换使用。
2.分页查询:需要参数,PageSize:每页多少条,PageNum:页数,如从哪张表中查询哪些数据,查询多少页数据。
Eg:
SELECT
Product_name,
List_price
FROM
Production.products
ORDER BY
List_price,
Product_name
OFFSET(PageNum-1)*PageSize ROWS
FETCH NEXT PageSize ROWS ONLY;
- 有关过滤数据的语句:
1、Select Distinct字句检索指定列表中的唯一不同值,换句话来说,它从结果集中删除列中的重复值。DISTINCT字句将所有null值视为相同值。
2.SQL Server WHERE字句从表中获取满足一行或多个条件的行。
Eg:
SELECT
Select_list
FROM
Table_name
WHERE
Search_condition;
- 在WHERE字句中,指定搜索条件以过滤FROM字句返回的行。WHERE字句仅返回导致搜索条件计算为TRUE的行。搜索条件是逻辑表达式或多个逻辑表达式的组合
3.AND查找满足两个条件的行,AND是一个逻辑运算符,用于组合两个布尔表达式。
4.OR查找满足任意一个条件的行,是一个逻辑运算符,用于组合两个布尔表达式,在语句中使用多个逻辑运算符时,SQL Server将在AND运算之后计算OR运算符。但是,不同的是,可以使用括号更改评估顺序。
5.Between查找两个值之间的值的行,是一个逻辑运算符,用于指定要测试值的范围。可以使用大于或等于(>=)且小于或等于(<=)来替换。
注意:使用BETWEEN运算符的条件比使用比较运算符>=,<=和逻辑运算符AND的条件更具可读性。要取消BETWEEN运算符的结果,请使用NOT BETWEEN运算符。