在 SQL 中,排序使用 ORDER BY 子句实现。以下是详细用法和示例(使用中文注释):
1. 基本语法
SELECT 列1, 列2, ...
FROM 表名
ORDER BY 排序列 [ASC|DESC]; -- ASC 升序(默认),DESC 降序
2. 单列排序
-- 按【年龄】升序(从小到大)
SELECT 姓名, 年龄
FROM 员工表
ORDER BY 年龄 ASC;
-- 按【工资】降序(从高到低)
SELECT 姓名, 工资
FROM 员工表
ORDER BY 工资 DESC;
3. 多列排序
-- 先按【部门】升序,同部门再按【工资】降序
SELECT 姓名, 部门, 工资
FROM 员工表
ORDER BY 部门 ASC, 工资 DESC;
4. 按表达式或函数排序
-- 按名字长度排序
SELECT 姓名
FROM 员工表
ORDER BY LENGTH(姓名); -- MySQL 用 LENGTH(), SQL Server 用 LEN()
-- 按日期年份降序
SELECT 姓名, 入职日期
FROM 员工表
ORDER BY YEAR(入职日期) DESC;
5. 按 SELECT 中的列序号排序
-- 按 SELECT 的第二列(年龄)降序
SELECT 姓名, 年龄
FROM 员工表
ORDER BY 2 DESC; -- "2" 代表 SELECT 中的第二列(年龄)
6. 处理 NULL 值
- NULL 默认最小(升序排在最前,降序排在最后)
- 强制 NULL 在最后(MySQL):
SELECT 姓名, 奖金 FROM 员工表 ORDER BY IF(奖金 IS NULL, 1, 0), 奖金 DESC; -- 先非NULL,再NULL
7. 中文排序(按拼音或笔画)
- MySQL:用
CONVERT(列名 USING gbk)按拼音排序SELECT 姓名 FROM 员工表 ORDER BY CONVERT(姓名 USING gbk); -- 按汉字拼音排序 - SQL Server:用
COLLATE Chinese_PRC_CI_ASSELECT 姓名 FROM 员工表 ORDER BY 姓名 COLLATE Chinese_PRC_CI_AS; -- 按拼音排序
示例数据演示
| 姓名 | 年龄 | 工资 | 部门 |
|---|---|---|---|
| 张三 | 25 | 8000 | 销售 |
| 李四 | 30 | 9000 | 技术 |
| 王五 | 28 | 7500 | 销售 |
多列排序查询:
SELECT 姓名, 部门, 工资
FROM 员工表
ORDER BY 部门 ASC, 工资 DESC;
结果:
姓名 | 部门 | 工资
--------|--------|------
李四 | 技术 | 9000
张三 | 销售 | 8000
王五 | 销售 | 7500
注意事项
ORDER BY在WHERE、GROUP BY、HAVING之后执行。- 可排序未在
SELECT中出现的列(除非使用DISTINCT)。 - 对文本排序时注意大小写敏感(可用
COLLATE调整)。
掌握这些技巧即可灵活应对 SQL 中的排序需求!
SQL注入把系统搞挂了该怎么处理?
最近我在整理安全漏洞相关问题,准备在公司做一次分享。恰好,这段时间团队发现了一个sql注入漏洞:在一个公共的分页功能中,排序字段作为入参,前端页面可以自定义。在分页sql的mybatis
2021-03-03 15:00:18
FPGA排序-冒泡排序介绍
排序算法是图像处理中经常使用一种算法,常见的排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序。
2023-07-17 10:12:06
SQL后悔药,SQL性能优化和SQL规范优雅
每一个好习惯都是一笔财富,本文基于MySQL,分SQL后悔药, SQL性能优化,SQL规范优雅三个方向,分享写SQL的21个好习惯,谢谢阅读,加油哈~ 1. 写完SQL先explain查看执行计划
2020-11-14 09:54:27
几个写SQL时常见的“坏毛病”及优化技巧
该SQL语句原意是:先做一系列的左连接,然后排序取前15条记录。从执行计划也可以看出,最后一步估算排序记录数为90万,时间消耗为12秒。
2023-01-17 09:34:41
MyBatis动态sql是什么?MyBatis动态SQL最全教程
动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。
2023-08-10 10:18:02
sql优化常用的几种方法
前言 1.慢SQL优化思路。 1.1 慢查询日志记录慢SQL 1.2 explain查看分析SQL的执行计划 1.3 profile 分析执行耗时 1.4 Optimizer Trace分析详情
2022-11-14 15:04:33
随机数字排序教程
本次实验我们利用对随机数字进行排序来给大家介绍排序算法的实现,常见的快速排序、归并排序、堆排序、冒泡排序等属于比较排序。在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。
2023-03-24 14:55:50
揭秘冒泡排序、交换排序和插入排序
01 — 冒泡排序 在实现冒泡排序代码之前我们先理解一下什么是冒泡排序,我们举一个现实生活中的例子来帮助我们理解。 操场排队我们都知道吧,现在有一支队伍,有的人身高一样有的不一样,这个时候我们需要一
2021-06-18 09:57:54
什么是SQL注入?Java项目防止SQL注入方式
Java项目防止SQL注入方式 这里总结4种: PreparedStatement防止SQL注入 mybatis中#{}防止SQL注入 对请求参数的敏感词汇进行过滤 nginx反向代理防止SQL注入
2023-10-16 14:26:34
为什么要动态sql语句?
为什么要动态sql语句?因为动态sql语句能够提供一些比较友好的机制1、可以使得一些在编译过程中无法获得完整的sql语句,在程序执行阶段动态的获得。2、支持动态组装 sql语句、动态参数 两种形式动态sql语句有两种1、使用sql主变量2、使用动态参数...
程序诗人
2021-12-20 06:00:51
动态Sql介绍
动态Sql介绍 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格
2023-05-31 09:34:42
php版冒泡排序是如何实现的?
无论学习哪一种编程语言,进行算法方面的训练时都绕不开“排序”。排序在进阶编程中有非常广泛的应用,要想成为编程高手,排序算法是必须要掌握的。而冒泡排序算法作为一种交换排序算法,可以说是最简单的排序算法之一,比较容易理解和实现。今天我们就一起来了解一下如何使用php来实现冒泡排序算法吧。
2023-01-20 10:39:00
PROC SQL介绍
SQL(Structured Query Language)——结构化查询语言,是用于检索和更新数据的一种标准化语言,SQL在SAS中通过PROC SQL来实现。
2023-05-19 16:10:41
sql是什么意思网络用语
sql是什么意思?sql是结构化查询语言(Structured Query Language)的缩写。它是一种专门用于管理关系型数据库系统的编程语言。sql用于执行各种数据库操作,包括创建、修改
2023-10-13 17:31:51
冒泡排序算法原理
然后对剩下的未排序好的项目再进行扫描,使它们的最大者换到表的最后。以此类推,直到将表全部排序好为止。这种排序方法,每遍扫描以后,都缩短了待排序表的长度,如果在某次扫描过程中,没有发现交换,则排序结束。
2019-03-29 16:57:22
插入排序和冒泡排序哪个更牛逼?
对于时间复杂度的分析,要把最好时间复杂度、最坏时间复杂度、平均时间复杂度分析出来,分别对应了排序算法的最好排序情况、最坏排序情况以及平均排序效率。
2019-11-27 16:13:54
排序算法之选择排序
选择排序: (Selection sort)是一种简单直观的排序算法,也是一种不稳定的排序方法。 选择排序的原理: 一组无序待排数组,做升序排序,我们先假定第一个位置上的数据就是最小的,我们用一个
2023-09-25 16:30:55
怎样运用Java实现冒泡排序和Arrays排序出来
在数据结构中我们学习了解了冒泡排序和Arrays排序的基本算法,但没能够用编程语言实现出来。那我们应该怎样运用Java通过编程语言将冒泡排序和Arrays排序实现出来呢?
2023-03-02 09:37:13
oracle执行sql查询语句的步骤是什么
Oracle数据库是一种常用的关系型数据库管理系统,具有强大的SQL查询功能。Oracle执行SQL查询语句的步骤包括编写SQL语句、解析SQL语句、生成执行计划、执行SQL语句、返回结果等多个阶段
2023-12-06 10:49:29
mysql和sql server区别
MySQL和SQL Server是两种常见的关系型数据库管理系统(RDBMS),用于存储和管理数据库。虽然它们都支持SQL语言,但在其他方面存在一些显著的区别。以下是MySQL和SQL Server
2023-11-21 11:07:28
SQL注入攻击是什么 SQL注入会带来哪些威胁
AQL的定义 SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句
2021-08-04 17:40:47
PHP数组排序
数组排序(6个) sort() - 以升序对数组排序rsort() - 以降序对数组排序 reversal sort)asort() - 根据值,以升序对关联数组进行排序(associative
rstech_rd
2020-11-04 07:48:28
Python实现的常见内部排序算法
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。
2023-07-06 12:35:42
oracle sql 定义变量并赋值
在Oracle SQL中,变量是用来存储数据值的标识符。通过定义和使用变量,我们可以在SQL语句中使用它们来存储和处理数据,从而实现更灵活和动态的查询和操作。 在Oracle SQL中,定义变量并
2023-12-06 10:46:32
常见排序算法分类
本文将通过动态演示+代码的形式系统地总结十大经典排序算法。 排序算法 算法分类 —— 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O
2023-06-22 14:49:00
