〖Python 数据库开发实战 - MySQL篇⑮〗- 数据表结果集的排序与去除重复(去重)
| 🎉 隱約雷鳴,陰霾天空。 🎉 |
| 🎉 但盼風雨來,能留你在此。 🎉 |
前言:
? 作者簡介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全棧 賦能的博主 ?
🏆 CSDN博客專家認證、新星計劃第三季全棧賽道 top_1 、華為云享專家、阿里云專家博主 🏆
📫 如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步👀
💬 人生格言:優于別人,并不高貴,真正的高貴應該是優于過去的自己。💬
🔥 如果感覺博主的文章還不錯的話,還請👍關注、點贊、收藏三連支持👍一下博主哦
| 🔥Python全棧白皮書🔥 | 零基礎入門篇 | 以淺顯易懂的方式輕松入門,讓你徹底愛上Python的魅力。 |
| 語法進階篇 | 主要圍繞多線程編程、正則表達式學習、含貼近實戰的項目練習 。 | |
| 自動化辦公篇 | 實現日常辦公軟件的自動化操作,節省時間、提高辦公效率。 | |
| 自動化測試實戰篇 | 從實戰的角度出發,先人一步,快速轉型測試開發工程師。 | |
| 數據庫開發實戰篇 | 掌握關系型與非關系數據庫知識,提升數據庫實戰開發能力。 | |
| 爬蟲入門與實戰 | 更新中 | |
| 數據分析篇 | 更新中 | |
| 前端入門+flask 全棧篇 | 更新中 | |
| django+vue全棧篇 | 更新中 | |
| 拓展-人工智能入門 | 更新中 | |
| 網絡安全之路 | 踩坑篇 | 記錄學習及演練過程中遇到的坑,便于后來居上者 |
| 網安知識掃盲篇 | 三天打魚,不深入了解原理,只會讓你成為腳本小子。 | |
| vulhub靶場漏洞復現 | 讓漏洞復現變得簡單,讓安全研究者更加專注于漏洞原理本身。 | |
| shell編程篇 | 不涉及linux基礎,最終案例會偏向于安全加固方向。 [待完結] | |
| WEB漏洞攻防篇 | 2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈 | |
| 滲透工具使用集錦 | 2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈 | |
| 點點點工程師 | 測試神器 - Charles | 軟件測試數據包抓包分析神器 |
| 測試神器 - Fiddler | 一文學會 fiddle ,學不會倒立吃翔,稀得! | |
| 測試神器 - Jmeter | 不僅是性能測試神器,更可用于搭建輕量級接口自動化測試框架。 | |
| RobotFrameWork | Python實現的自動化測試利器,該篇章僅介紹UI自動化部分。 | |
| Java實現UI自動化 | 文檔寫于2016年,Java實現的UI自動化,仍有借鑒意義。 | |
| MonkeyRunner | 該工具目前的應用場景已不多,文檔已刪,為了排版好看才留著。 |
文章目錄
- 🐳 結果集排序
- 🐬 排序關鍵字
- 🐬 注意排序內容相同的情況
- 🐬 多個排序字段
- 🐬 排序 + 分頁 案例演示
- 🐳 結果集去除重復記錄
- 🐬 去重語法
- 🐬 去重注意事項
該章節我們將要學習針對SQL語句查詢的結果集中的記錄進行排序與去除重復記錄(去重)。默認情況下,MySQL 不會對結果集中的數據進行排序。如果說我們想要針對某個字段按照一定的規律排序,可以使用 MySQL 為我們提供的 “ORDER BY” 子句來實現排序的功能;去重也是一樣,雖然數據表的主鍵不能存在重復的記錄,但是作為結果集卻是可以有重復的情況出現的,針對結果集的去除重復記錄,MySQL 也為我們提供了相對應的關鍵字 “DISTINCT” ,使用 “DISTINCT” 即可實現針對結果集去重的效果。
🐳 結果集排序
SQL語句排序語法如下:
SELECT ...... FROM ...... ORDER BY 列名 [ASC|DESC] -- 利用 ORDER BY 針對 列 進行排序 (ASC為升序,DESC為降序;如果不選擇排序,默認為升序的方式)SQL 語句排序示例:(查詢 t_emp 表,按照薪資待遇進行升序的排列進行結果集的展示)
SELECT ename, sal FROM t_emp ORDER BY sal; -- 從 t_emp 查詢 ename, sal 字段的數據,并按照 sal 進行升序排列SQL 語句排序示例:(查詢 t_emp 表,按照薪資待遇進行降序的排列進行結果集的展示)
SELECT ename, sal FROM t_emp ORDER BY sal DESC; -- 從 t_emp 查詢 ename, sal 字段的數據,并按照 sal 進行升序排列🐬 排序關鍵字
- 才能夠上文我們可以知道,ASC 代表升序(默認) ,DESC 代表降序
- 如果排序的列的內容是 數字類型 ,數據庫就按照數字的大小排序;如果排序列是日期類型,就按照日期大小來排序;如果排序列的內容是字符串,則按照字符串的字符集序號進行排序。
關鍵字排序示例(按照日期大小降序排序):
SELECT empno, ename, sal, hiredate FROM t_emp ORDER BY hiredate DESC;🐬 注意排序內容相同的情況
想一個問題:默認情況下,如果兩條數據排序的字段內容相同,那么排序會是什么樣子?會按照什么樣的規則進行排序?
見下圖中,按照 “月薪” 的降序排列的數據集
如上圖所示,恰巧有兩個人的月薪都是 3000 ,但是我們可以看到,雖然月薪都是 3000,但是它們按照主鍵的 empno 進行了升序的排列。除了MySQL 默認的這中方式之外,我們還可以設定第二個排序條件接著去排序,以此類推。
🐬 多個排序字段
如上文所說的那樣,我們可以設定多個排序條件去應對存在相同排序內容的情況。
可以使用 ORDER BY 規定首要排序條件和次要排序條件。數據庫會先按照首要排序條件排序,如果遇到首要排序內容相同的記錄,那么就會啟用次要排序條件接著排序。
根據上文的案例,我們來編寫一下相同月薪的員工按照入職時間進行升序排列的多個排序字段的SQL語句吧。
SELECT empno, ename, sal, hiredate FROM t_emp ORDER BY sal DESC, hiredate ASC;🐬 排序 + 分頁 案例演示
這里就不再過多的浪費文字介紹了,就是一句話的事兒。編寫 SQL 語句,實現"查詢員工表中月薪前五位的員工信息,且按月薪的降序排列。"
SQL 語句如下:
SELECT empno, ename, sal FROM t_emp ORDER BY sal DESC LIMIT 0,5;🐳 結果集去除重復記錄
正如該章節的開頭我們提到的那樣, 雖然數據表的主鍵不能存在重復的記錄,但是作為結果集卻是可以有重復的情況出現的。就比如員工表中,當我們單獨查詢員工職位的信息的時候就會出現相同職位的員工的記錄(見下圖)。
🐬 去重語法
針對結果集的去除重復記錄,MySQL 也為我們提供了相對應的關鍵字 “DISTINCT” ,使用 “DISTINCT” 即可實現針對結果集去重的效果。
語法如下:
SELECT DISTINCT 字段 FROM 表名稱; -- 只需要在需要去重的字段前面加上 "DISTINCT" 關鍵字即可去重示例演示:
以上文中查詢到的重復的員工職位為例,將重復的職位進行去重。
SELECT DISTINCT job FROM t_emp;PS:有一點大家一定要分清楚,"DISTINCT" 去除的是結果集中的重復記錄,而不是刪除數據表中的重復記錄。數據表中的重復記錄是不會被改變的。
🐬 去重注意事項
- 使用 DISTINCT 的 SELECT 語句中只能查詢一列數據,如果查詢多列,去重重復記錄的結果集展示就會失效。示例如下:
- DISTINCT 關鍵字在 SELECT 子句中只能使用一次,如下方類似的 SQL 語法是錯誤的,無法正常執行。
OK,該章節我們學習了對 SQL 語句結果集的排序與去重操作,下一章節我們將學習 SQL 語句的條件查詢語句,拜了個拜!
總結
以上是生活随笔為你收集整理的〖Python 数据库开发实战 - MySQL篇⑮〗- 数据表结果集的排序与去除重复(去重)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 回滚详解(rollback
- 下一篇: cmd、conhost退居二线,Win