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