首页 > 数据库 >7.2 SQL Server数据排序

7.2 SQL Server数据排序

时间:2022-08-27 17:48:37浏览次数:61  
标签:结果 Age Server 7.2 StudentNo SQL 排序 ORDER

SQL Server ORDER BY

目录

SQL Server ORDER BY子句简介

当使用SELECT语句从表中查询数据时,结果集中的行顺序无法保证。这意味着SQL Server可以返回未指定行顺序的结果集。

唯一可以保证返回有顺序的结果集是使用ORDER BY子句,语法如下:

SELECT
    select_list
FROM
    table_name
ORDER BY 
    column_name | expression [ASC | DESC ];

其中:
column_name | expression

首先,指定要对查询结果集进行排序的列名或表达式。如果指定多列,结果集将按第一列排序,然后按第二列排序,依此类推。

ASC | DESC
其次,使用ASCDESC指定指定列中的值应按升序还是降序排序。
默认是ASC,如果是值为NULL,则视为最低值。
在处理有ORDER BY子句的查询语句时,ORDER BY通常是最后处理。

ORDER BY示例

存在如下学生表:

A)按一列升序排序

下列语句把结果集通过学生的年龄进行升序排序:

select
    *
from 
    dbo.Students
order by
    Age;

本例中,没有指定ASCDESC,ORDER BY默认使用ASC;

B)按一列降序排序

下列语句把结果集通过学生的年龄进行降序排序:

select
    *
from 
    dbo.Students
order by
    Age DESC;

在本例中,由于我们显式指定了DESCORDER BY子句按Age列中的值按降序对结果集进行排序。

C)按多列对结果集排序

下面的语句查询学生的Id、名字、年龄。它先按年龄排序,然后按学号排序(年龄相同的再按照学号排序)。

select 
    Id,
    NickName,
	StudentNo,
    Age
from
    dbo.Students
order by
    Age,
    StudentNo

D)按多列和不同顺序对结果集排序

这次,我们先把结果集按照年龄降序排列,然后年龄相同的再按照学号升序排列:

select 
    Id,
    NickName,
	StudentNo,
    Age
from
    dbo.Students
order by
    Age DESC,
    StudentNo ASC

E)按不在SELECT列表中的列对结果集排序

可以按未出现在选择列表中的列对结果集进行排序。例如,以下语句按学生班级名ClassName进行排序,即使班级名ClassName未显示在SELECT列表中。

select 
    Id,
    NickName,
	StudentNo,
    Age
from
    dbo.Students
order by
    ClassName

F)按表达式对结果集排序

LEN()返回字符串中的字符数。下面使用ORDER BY子句中的LEN()函数检索按名字长度排序的客户列表:

select 
    *
from
    dbo.Students
order by
    LEN(NickName) ASC;

结果中,名字越短的会显示在前面

G)按列的顺序位置排序

SQL Server允许您根据SELECT列表中显示的列的顺序位置对结果集进行排序。

下列语句先对SELECT中的Age进行排序,然后再对StudentNo进行排序:

select 
    Id,
    Age,
    StudentNo
from
    dbo.Students
order by
    2 ASC,--对应StudentNo,
    3 DESC;--对应Age

这个例子,先是按照年龄进行升序,然后年龄相同的再按照学号进行降序。

H)ORDER BY GUID

在SQL Server中,如果想对结果集进行随机排序,可以使用如下方式:

select 
    Id,
    Age,
    StudentNo
from
    dbo.Students
order by
    NEWID();

这样,每次返回的结果集顺序都不一样。

标签:结果,Age,Server,7.2,StudentNo,SQL,排序,ORDER
From: https://www.cnblogs.com/michaelshen/p/16631005.html

相关文章

  • MySQL源码分析之SQL函数执行
    1.MySQL中执行一条SQL的总体流程2.SQL函数执行过程1.MySQL中执行一条SQL的总体流程一条包含函数的SQL语句,在mysql中会经过:客户端发送,服务器连接,语法解析,语句执行的......
  • 【MySQL】MySQL8确认哪些参数在使用以及来源
    在MySQL8中,参数可能来自不同的地方,确认有效的参数来自于哪里:SELECT variable_name, variable_sourceASsource, variable_path, set_time, set_userASUSER, set......
  • 【MySQL】MySQL8持久化系统变量
    set命令可以用于将某些全局系统变量持久化到数据目录中的mysqld-auto.cnf文件中,以影响后续启动的服务器操作。resetpersist从mysqld-auto.cnf中删除持久设置。在运行时持......
  • mysql在Linux与widows安装
    一、mysql的安装之前搭建linux下项目的发布,最后遗留的问题时数据库的迁移,如何从windows上迁移到linux上?这里首先进行mysql数据库的安装1、下载mysql安装包在这里下载的......
  • koa连接mysql数据库
    app.js中的代码:constKoa=require('koa2');constapp=newKoa();constport=5050;constRouter=require('koa-router');constrouter=newRouter();cons......
  • sparksql 函数大全
    数学函数函数简介用法acosh反双曲余弦值SELECTacosh(0.5);0.9624236501192069SELECTacosh(3.5);1.9248473002384139asinh反双曲正弦SELECTasinh(1.45);......
  • Mysql 常用命令
    大纲命令执行事务STARTTRANSACTION;//开启事务UPDATE`Users`SETAccountId=0WHEREAccountIdisnullCOMMIT;//提交ROLLBACK;//回滚常见问题Q1.允......
  • MyBatis保姆级理解与使用,动态SQL(核心)
    1. 动态SQL(核心)1.1 简介Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的难点问题。比如:我们在多条......
  • mysql逻辑结构,存储结构
    宏观:库,存储在操作系统目录中表:  微观:段区页一个表就是一个段,mysql分配空间时至少分配一个区,每个区默认时1M(64个page页),mysql最小的IO单元就是PAGE(16KB) ......
  • mysql常用操作汇总
    工作中经常用会遇到这种情况,可以访问mysql所在的服务器,但是服务器端口不对外暴露(通常因为安全原因)。这时,操作数据库只能通过命令行和mysqlclient窗口来实现。我对这些操作......