在 SQL 中,排序使用 ORDER BY 子句實現(xiàn)。以下是詳細用法和示例(使用中文注釋):
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. 按表達式或函數(shù)排序
-- 按名字長度排序
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; -- 按拼音排序
示例數(shù)據演示
| 姓名 | 年齡 | 工資 | 部門 |
|---|---|---|---|
| 張三 | 25 | 8000 | 銷售 |
| 李四 | 30 | 9000 | 技術 |
| 王五 | 28 | 7500 | 銷售 |
多列排序查詢:
SELECT 姓名, 部門, 工資
FROM 員工表
ORDER BY 部門 ASC, 工資 DESC;
結果:
姓名 | 部門 | 工資
--------|--------|------
李四 | 技術 | 9000
張三 | 銷售 | 8000
王五 | 銷售 | 7500
注意事項
ORDER BY在WHERE、GROUP BY、HAVING之后執(zhí)行。- 可排序未在
SELECT中出現(xiàn)的列(除非使用DISTINCT)。 - 對文本排序時注意大小寫敏感(可用
COLLATE調整)。
掌握這些技巧即可靈活應對 SQL 中的排序需求!
SQL注入把系統(tǒng)搞掛了該怎么處理?
最近我在整理安全漏洞相關問題,準備在公司做一次分享。恰好,這段時間團隊發(fā)現(xiàn)了一個sql注入漏洞:在一個公共的分頁功能中,排序字段作為入參,前端頁面可以自定義。在分頁sql的mybatis
2021-03-03 15:00:18
FPGA排序-冒泡排序介紹
排序算法是圖像處理中經常使用一種算法,常見的排序算法有插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序。
2023-07-17 10:12:06
SQL后悔藥,SQL性能優(yōu)化和SQL規(guī)范優(yōu)雅
每一個好習慣都是一筆財富,本文基于MySQL,分SQL后悔藥, SQL性能優(yōu)化,SQL規(guī)范優(yōu)雅三個方向,分享寫SQL的21個好習慣,謝謝閱讀,加油哈~ 1. 寫完SQL先explain查看執(zhí)行計劃
2020-11-14 09:54:27
幾個寫SQL時常見的“壞毛病”及優(yōu)化技巧
該SQL語句原意是:先做一系列的左連接,然后排序取前15條記錄。從執(zhí)行計劃也可以看出,最后一步估算排序記錄數(shù)為90萬,時間消耗為12秒。
2023-01-17 09:34:41
MyBatis動態(tài)sql是什么?MyBatis動態(tài)SQL最全教程
動態(tài) SQL 是 MyBatis 的強大特性之一。在 JDBC 或其它類似的框架中,開發(fā)人員通常需要手動拼接 SQL 語句。根據不同的條件拼接 SQL 語句是一件極其痛苦的工作。
2023-08-10 10:18:02
sql優(yōu)化常用的幾種方法
前言 1.慢SQL優(yōu)化思路。 1.1 慢查詢日志記錄慢SQL 1.2 explain查看分析SQL的執(zhí)行計劃 1.3 profile 分析執(zhí)行耗時 1.4 Optimizer Trace分析詳情
2022-11-14 15:04:33
隨機數(shù)字排序教程
本次實驗我們利用對隨機數(shù)字進行排序來給大家介紹排序算法的實現(xiàn),常見的快速排序、歸并排序、堆排序、冒泡排序等屬于比較排序。在排序的最終結果里,元素之間的次序依賴于它們之間的比較。每個數(shù)都必須和其他數(shù)進行比較,才能確定自己的位置。
2023-03-24 14:55:50
什么是SQL注入?Java項目防止SQL注入方式
Java項目防止SQL注入方式 這里總結4種: PreparedStatement防止SQL注入 mybatis中#{}防止SQL注入 對請求參數(shù)的敏感詞匯進行過濾 nginx反向代理防止SQL注入
2023-10-16 14:26:34
揭秘冒泡排序、交換排序和插入排序
01 — 冒泡排序 在實現(xiàn)冒泡排序代碼之前我們先理解一下什么是冒泡排序,我們舉一個現(xiàn)實生活中的例子來幫助我們理解。 操場排隊我們都知道吧,現(xiàn)在有一支隊伍,有的人身高一樣有的不一樣,這個時候我們需要一
2021-06-18 09:57:54
動態(tài)Sql介紹
動態(tài)Sql介紹 動態(tài) SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應該能理解根據不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格
2023-05-31 09:34:42
為什么要動態(tài)sql語句?
為什么要動態(tài)sql語句?因為動態(tài)sql語句能夠提供一些比較友好的機制1、可以使得一些在編譯過程中無法獲得完整的sql語句,在程序執(zhí)行階段動態(tài)的獲得。2、支持動態(tài)組裝 sql語句、動態(tài)參數(shù) 兩種形式動態(tài)sql語句有兩種1、使用sql主變量2、使用動態(tài)參數(shù)...
程序詩人
2021-12-20 06:00:51
PROC SQL介紹
SQL(Structured Query Language)——結構化查詢語言,是用于檢索和更新數(shù)據的一種標準化語言,SQL在SAS中通過PROC SQL來實現(xiàn)。
2023-05-19 16:10:41
sql是什么意思網絡用語
sql是什么意思?sql是結構化查詢語言(Structured Query Language)的縮寫。它是一種專門用于管理關系型數(shù)據庫系統(tǒng)的編程語言。sql用于執(zhí)行各種數(shù)據庫操作,包括創(chuàng)建、修改
2023-10-13 17:31:51
php版冒泡排序是如何實現(xiàn)的?
無論學習哪一種編程語言,進行算法方面的訓練時都繞不開“排序”。排序在進階編程中有非常廣泛的應用,要想成為編程高手,排序算法是必須要掌握的。而冒泡排序算法作為一種交換排序算法,可以說是最簡單的排序算法之一,比較容易理解和實現(xiàn)。今天我們就一起來了解一下如何使用php來實現(xiàn)冒泡排序算法吧。
2023-01-20 10:39:00
mysql和sql server區(qū)別
MySQL和SQL Server是兩種常見的關系型數(shù)據庫管理系統(tǒng)(RDBMS),用于存儲和管理數(shù)據庫。雖然它們都支持SQL語言,但在其他方面存在一些顯著的區(qū)別。以下是MySQL和SQL Server
2023-11-21 11:07:28
oracle執(zhí)行sql查詢語句的步驟是什么
Oracle數(shù)據庫是一種常用的關系型數(shù)據庫管理系統(tǒng),具有強大的SQL查詢功能。Oracle執(zhí)行SQL查詢語句的步驟包括編寫SQL語句、解析SQL語句、生成執(zhí)行計劃、執(zhí)行SQL語句、返回結果等多個階段
2023-12-06 10:49:29
排序算法之選擇排序
選擇排序: (Selection sort)是一種簡單直觀的排序算法,也是一種不穩(wěn)定的排序方法。 選擇排序的原理: 一組無序待排數(shù)組,做升序排序,我們先假定第一個位置上的數(shù)據就是最小的,我們用一個
2023-09-25 16:30:55
插入排序和冒泡排序哪個更牛逼?
對于時間復雜度的分析,要把最好時間復雜度、最壞時間復雜度、平均時間復雜度分析出來,分別對應了排序算法的最好排序情況、最壞排序情況以及平均排序效率。
2019-11-27 16:13:54
SQL注入攻擊是什么 SQL注入會帶來哪些威脅
AQL的定義 SQL是操作數(shù)據庫數(shù)據的結構化查詢語言,網頁的應用數(shù)據和后臺數(shù)據庫中的數(shù)據進行交互時會采用SQL。而SQL注入是將Web頁面的原URL、表單域或數(shù)據包輸入的參數(shù),修改拼接成SQL語句
2021-08-04 17:40:47
怎樣運用Java實現(xiàn)冒泡排序和Arrays排序出來
在數(shù)據結構中我們學習了解了冒泡排序和Arrays排序的基本算法,但沒能夠用編程語言實現(xiàn)出來。那我們應該怎樣運用Java通過編程語言將冒泡排序和Arrays排序實現(xiàn)出來呢?
2023-03-02 09:37:13
PHP數(shù)組排序
數(shù)組排序(6個) sort() - 以升序對數(shù)組排序rsort() - 以降序對數(shù)組排序 reversal sort)asort() - 根據值,以升序對關聯(lián)數(shù)組進行排序(associative
rstech_rd
2020-11-04 07:48:28
SQL注入到Getshell的教程
上一節(jié),我們已經介紹了基本的SQL查詢語句,常見的SQL注入類型,DVWA靶場演示SQL注入。學習了上一節(jié)我們可以做到執(zhí)行任意SQL語句,主要可以對數(shù)據庫的數(shù)據進行操作,但是不能對服務器和應用進一步控制,本節(jié)就介紹下在有sql注入的情況下如何進行下一步的滲透,獲取到服務器權限。
2022-09-21 14:45:20
oracle sql 定義變量并賦值
在Oracle SQL中,變量是用來存儲數(shù)據值的標識符。通過定義和使用變量,我們可以在SQL語句中使用它們來存儲和處理數(shù)據,從而實現(xiàn)更靈活和動態(tài)的查詢和操作。 在Oracle SQL中,定義變量并
2023-12-06 10:46:32
SQL的定義、組成及基本語法
SQL (Structured Query Language) 是具有數(shù)據操縱和數(shù)據定義等多種功能的數(shù)據庫語言,這種語言具有交互性特點,能為用戶提供極大的便利,數(shù)據庫管理系統(tǒng)應充分利用SQL語言提高
2023-09-09 09:42:19
Python實現(xiàn)的常見內部排序算法
排序算法可以分為內部排序和外部排序,內部排序是數(shù)據記錄在內存中進行排序,而外部排序是因排序的數(shù)據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。
2023-07-06 12:35:42