查询数据
按多列对结果集进行排序
以下语句检索客户的名字,姓氏和城市。 它首先按城市对客户列表进行排序,然后按名字排序。
SELECT
city, first_name, last_name
FROM
sales.customers
ORDER BY
city, first_name;
按多列和不同顺序对结果集进行排序
以下语句按城市按降序对客户进行排序,之后按第一个名称按升序对排序结果进行排序。
SELECT
city, first_name, last_name
FROM
sales.customers
ORDER BY
city DESC,
first_name ASC;
按不在选择列表中的列对结果集进行排序,
注意, state 列在 customers 表中定义。 如果不是,那么查询将无效。 可以通过选择列表中未显示的列对结果集进行排序。 例如,以下语句按 state 对客户进行排序,即使 state 列未显示在选择列表中。
SELECT
city, first_name, last_name
FROM
sales.customers
ORDER BY
state;
按表达式对结果集进行排序
LEN() 函数返回字符串的字符数。 以下语句使用 ORDER BY 子句中的 LEN() 函数来检索按名字长度排序 客户列表。
SELECT
first_name, last_name, LEN(first_name) as len_name
FROM
sales.customers
ORDER BY
LEN(first_name) DESC;
按列的序数位置排序
SQL Server允许根据选择列表中显示的列的序号位置对结果集进行排序。 以下语句按名字和姓氏对客户进行排序。 但是它没有显式指定列名,而是使用列的序号位置:
SELECT
first_name, last_name
FROM
sales.customers
ORDER BY
1, 2;
限制返回行数
. SQL Server Select Top语句 SELECT TOP 子句用于限制查询结果集中返回的行数或行百分比。
由于存储在表中的行的顺序是不可预测的,因此 SELECT TOP 语句始终与 ORDER BY 子句一起使用。 结 果,结果集限于前 N 个有序行数。
以下是带有 SELECT 语句的 TOP 子句的语法:
SELECT TOP
(expression) [PERCENT] [WITH TIES]
FROM
table_name
ORDER BY
column_name;
在此语法中, SELECT 语句可以包含其他子句,如: WHERE , JOIN , HAVING 和 GROUP BY 。
expression - TOP 关键字后面是一个表达式,它指定要返回的行数。 如果使用 PERCENT ,则将 表达式计算为浮点值,否则将其转换为 BIGINT 值。
PERCENT - PERCENT 关键字指示查询返回前 N 个行百分比,其中 N 是表达式的结果。
WITH TIES - WITH TIES 用于返回更多行,其值与有限结果集中的最后一行匹配。 请注意, WITH TIES 可能会导致返回的行数多于在表达式中指定的行数。
. 使用具有恒定值的TOP
以下示例使用常量值返回前 10 个最贵的产品。
SELECT
TOP 10 product_name, list_price
FROM
production.products
ORDER BY
list_price DESC;