婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL中distinct 和 row_number() over() 的區別及用法

SQL中distinct 和 row_number() over() 的區別及用法

熱門標簽:哈爾濱云外呼系統運營商 dq8 全地圖標注 趙縣地圖標注 南寧智能電銷機器人價格 電銷機器人市場價 永州智能外呼系統 遂寧400電話申請 地圖標注直通車 邯鄲400電話注冊辦理

1 前言

在咱們編寫 SQL 語句操作數據庫中的數據的時候,有可能會遇到一些不太爽的問題,例如對于同一字段擁有相同名稱的記錄,我們只需要顯示一條,但實際上數據庫中可能含有多條擁有相同名稱的記錄,從而在檢索的時候,顯示多條記錄,這就有違咱們的初衷啦!因此,為了避免這種情況的發生,咱們就需要進行“去重”處理啦,那么何為“去重”呢?說白了,就是對同一字段讓擁有相同內容的記錄只顯示一條記錄。

那么,如何實現“去重”的功能呢?對此,咱們有兩種方式可以實現該功能。

第一種,在編寫 select 語句的時候,添加 distinct 關鍵詞;

第二種,在編寫 select 語句的時候,調用 row_number() over() 函數。

以上兩種方式都可以實現“去重”功能,那兩者之間有何異同呢?接下來,作者將給出詳細的說明。

2 distinct

在 SQL 中,關鍵字 distinct 用于返回唯一不同的值。其語法格式為:

SELECT DISTINCT 列名稱 FROM 表名稱

假設有一個表“CESHIDEMO”,包含兩個字段,分別 NAME 和 AGE,具體格式如下:

觀察以上的表,咱們會發現:擁有相同 NAME 的記錄有兩條,擁有相同 AGE 的記錄有三條。如果咱們運行下面這條 SQL 語句,

/**
* 其中 PPPRDER 為 Schema 的名字,即表 CESHIDEMO 在 PPPRDER 中
*/

select name from PPPRDER.CESHIDEMO

將會得到如下結果:

觀察該結果,咱們會發現在以上的四條記錄中,包含兩條 NAME 值相同的記錄,即第 2 條記錄和第 3 條記錄的值都為“gavin”。那么,如果咱們想讓擁有相同 NAME 的記錄只顯示一條該如何實現呢?這時,就需要用到 distinct 關鍵字啦!接下來,運行如下 SQL 語句,

select distinct name from PPPRDER.CESHIDEMO

將會得到如下結果:

觀察該結果,顯然咱們的要求得到實現啦!但是,咱們不禁會想到,如果將 distinct 關鍵字同時作用在兩個字段上將會產生什么效果呢?既然想到了,咱們就試試唄,運行如下 SQL 語句,

select distinct name, age from PPPRDER.CESHIDEMO

得到的結果如下所示:

觀察該結果,哎呀,貌似沒有作用啊?她將全部的記錄都顯示出來了啊!其中 NAME 值相同的記錄有兩條,AGE 值相同的記錄有三條,完全沒有變化啊!但事實上,結果就應該是這樣的。因為當 distinct 作用在多個字段的時候,她只會將所有字段值都相同的記錄“去重”掉,顯然咱們“可憐”的四條記錄并不滿足該條件,因此 distinct 會認為上面四條記錄并不相同。空口無憑,接下來,咱們再向表“CESHIDEMO”中添加一條完全相同的記錄,驗證一下即可。添加一條記錄后的表如下所示:

再運行如下的 SQL 語句,

select distinct name, age from PPPRDER.CESHIDEMO

得到的結果如下所示:

觀察該結果,完美的驗證了咱們上面的結論。

此外,有一點需要大家特別注意,即:關鍵字 distinct 只能放在 SQL 語句中所有字段的最前面才能起作用,如果放錯位置,SQL 不會報錯,但也不會起到任何效果。

3 row_number() over()

在 SQL Server 數據庫中,為咱們提供了一個函數 row_number() 用于給數據庫表中的記錄進行標號,在使用的時候,其后還跟著一個函數 over(),而函數 over() 的作用是將表中的記錄進行分組和排序。兩者使用的語法為:

ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)

意為:將表中的記錄按字段 COLUMN1進行分組,按字段 COLUMN2 進行排序,其中

PARTITION BY:表示分組ORDER BY:表示排序

接下來,咱們還用表“CESHIDEMO”中的數據進行測試。首先,給出沒有使用 row_number() over() 函數時查詢的結果,如下所示:

然后,運行如下 SQL 語句,

select PPPRDER.CESHIDEMO.*, row_number() over(partition by age order by name desc) from PPPRDER.CESHIDEMO

得到的結果如下所示:

從上面的結果可以看出,其在原表的基礎上,多了一列標有數字排序的列。那么反過來分析咱們運行的 SQL 語句,發現其確實按字段 AGE 的值進行分組了,也按字段 NAME 的值進行排序啦!因此,函數的功能得到了驗證。

接下來,咱們就研究如何用 row_number() over() 函數實現“去重”的功能。通過觀察上面的結果,咱們可以發現,如果以 NAME 分組,以 AGE 排序,然后再取每組的第一個記錄或許就可以實現“去重”的功能啊!那么試試看,運行如下 SQL 語句,

/*
* 其中 rn 表示最后添加的那一列
*/

select * from 
(select PPPRDER.CESHIDEMO.*, row_number() over(partition by name order by age desc) rn from PPPRDER.CESHIDEMO)
where rn = 1

運行后,得到的結果如下所示:

觀察以上的結果,我們發現,哎呀,數據“去重”的功能一不小心就被咱們實現了啊!不過很遺憾,如果咱們細心的話,會發現一個很不爽的事情,那就是在執行以上 SQL 語句進行“去重”的時候,有一條 NAME 值為“gavin”、AGE 值為“18”的記錄被過濾掉了,但是在現實生活會中,同名不同年齡的事情太正常了。

4 總結

通過閱讀及實踐以上內容,咱們已經知道了,無論是用關鍵字 distinct 還是用函數 row_number() over() 都可以實現數據“去重”的功能。但是在實現使用的過程中,咱們要特別注意兩者的用法特點以及區別。

在使用關鍵字 distinct 的時候,咱們要知道其作用于單個字段和多個字段的時候是有區別的,作用于單個字段時,其“去重”的是表中所有該字段值重復的數據;作用于多個字段的時候,其“去重”的表中所有字段(即 distinct 具體作用的多個字段)值都相同的數據。

在使用函數 row_number() over() 的時候,其是按先分組排序后,再取出每組的第一條記錄來進行“去重”的(在本篇博文中如此)。當然,在此處咱們還可以通過不同的限制條件來進行“去重”,具體如何實現,就需要大家自己去動腦思考啦!

最后,在本篇博文中,作者詳述了自己對用關鍵字 distinct 和函數 row_number() over() 進行數據“去重”的一些認識,希望以上的內容能夠對大家有所幫助!

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

標簽:張家界 南寧 鄂州 阿里 中衛 上海 浙江 定西

巨人網絡通訊聲明:本文標題《SQL中distinct 和 row_number() over() 的區別及用法》,本文關鍵詞  SQL,中,distinct,和,row,number,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL中distinct 和 row_number() over() 的區別及用法》相關的同類信息!
  • 本頁收集關于SQL中distinct 和 row_number() over() 的區別及用法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色国产综合视频| 天天操天天综合网| 91麻豆精品国产自产在线| 理论片日本一区| 豆国产96在线|亚洲| 大胆欧美人体老妇| 亚洲丰满少妇videoshd| 国产成人av电影在线观看| 久久人人爽人人爽| 亚洲综合在线第一页| 五月婷婷欧美视频| 7777精品伊人久久久大香线蕉最新版 | 欧美zozo另类异族| 精品国产sm最大网站免费看| 精品一区二区三区香蕉蜜桃| 亚洲国产精品一区二区久久| 亚洲最大成人综合| 亚洲成人av电影在线| 喷水一区二区三区| 国产不卡免费视频| 欧美性猛交xxxx乱大交退制版| 日本视频在线一区| 亚洲国产精品久久久男人的天堂| 国产欧美日韩综合精品一区二区| www.亚洲色图| 91精品国产综合久久精品麻豆 | 9人人澡人人爽人人精品| 国产自产v一区二区三区c| 欧美日韩国产免费一区二区| 欧美午夜精品免费| 欧美午夜影院一区| 在线免费观看日本欧美| 欧美专区日韩专区| 色哟哟国产精品| 7777精品伊人久久久大香线蕉| 欧美伦理电影网| 国产日韩视频一区二区三区| 99精品视频在线观看免费| 亚洲免费在线播放| 欧美三级一区二区| 欧美日高清视频| 亚洲精品一区二区三区99| 欧美zozozo| 亚洲国产电影在线观看| 日韩国产高清影视| 午夜视频在线观看一区二区 | 亚洲一区二区三区精品在线| 国产精品一二三区在线| 99九九99九九九视频精品| 在线不卡中文字幕播放| 国产精品国产三级国产普通话99 | 日韩一区二区免费在线观看| 国产精品国产三级国产普通话99| 日韩精品一区二区三区老鸭窝| 国产欧美精品一区二区三区四区| 一区二区三区精品在线观看| 国产suv精品一区二区883| 91麻豆精品国产自产在线观看一区| 久久久久久久精| 国产精品一级黄| 91精品欧美久久久久久动漫| 日本视频一区二区三区| 一二三四区精品视频| 喷白浆一区二区| 亚洲va天堂va国产va久| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品少妇自拍| 久久久久久久精| 91一区在线观看| 亚洲男人的天堂在线观看| 激情综合五月婷婷| 日本道色综合久久| 亚洲综合成人在线| 国产精品一区二区三区网站| 精品国产免费视频| 韩国av一区二区三区四区| 久久久久国产免费免费| 国产主播一区二区三区| 国产日韩欧美综合在线| 99久久99久久免费精品蜜臀| 婷婷丁香久久五月婷婷| 久久亚洲捆绑美女| 毛片一区二区三区| 国产精品久久久久久久午夜片| 91福利视频久久久久| 国产福利一区在线| 石原莉奈在线亚洲二区| 国产精品久久久久久久久免费樱桃 | 欧美欧美午夜aⅴ在线观看| 五月婷婷综合网| 亚洲综合图片区| 久久久久国产精品厨房| 日韩一区二区三区观看| 91视频com| 97精品电影院| 国产成人av电影免费在线观看| 免费观看一级欧美片| 首页欧美精品中文字幕| 亚洲免费资源在线播放| 亚洲精选免费视频| 日韩一区二区免费高清| 欧美一二三区精品| 91精品免费观看| 欧美v亚洲v综合ⅴ国产v| 日韩一区二区在线观看视频播放| 欧美日韩国产首页在线观看| 色综合久久88色综合天天免费| av网站一区二区三区| 成人免费视频免费观看| 91在线视频播放地址| 欧美伦理电影网| 精品国产一区二区三区久久影院 | 92国产精品观看| 欧美性高清videossexo| 欧美一级黄色大片| 国产精品麻豆99久久久久久| 亚洲免费三区一区二区| 亚洲国产aⅴ成人精品无吗| 亚洲高清视频中文字幕| 精品一区二区综合| 91啦中文在线观看| 欧美不卡一二三| 国产欧美一区二区精品久导航| 午夜精品久久久久久久久久 | 欧美色图12p| 日韩免费电影一区| 国产欧美精品在线观看| 一区二区三区91| 国产福利精品一区二区| 欧美人体做爰大胆视频| 国产精品久久精品日日| 免费成人在线网站| 欧美三区免费完整视频在线观看| 26uuu色噜噜精品一区| 午夜精品福利一区二区三区av| 国产成人aaa| 国产日韩欧美精品一区| 国产一本一道久久香蕉| 91精品国产综合久久久久久久久久 | 国产一区二区调教| 日韩视频免费观看高清完整版 | 在线观看一区二区精品视频| 日韩午夜三级在线| 亚洲va欧美va人人爽| 色网站国产精品| 夜夜亚洲天天久久| 色婷婷亚洲综合| 亚洲成人av在线电影| 不卡视频免费播放| 亚洲视频一二三| 色婷婷狠狠综合| 亚洲国产一区二区三区| 欧美二区在线观看| 九色porny丨国产精品| 国产日本欧美一区二区| 国产精品99久久久久久有的能看| 2021中文字幕一区亚洲| 成人久久久精品乱码一区二区三区 | 日韩欧美www| 九九久久精品视频| 最新中文字幕一区二区三区| 粗大黑人巨茎大战欧美成人| 亚洲国产欧美在线| 日韩一区二区三区在线观看| av一区二区久久| 一级日本不卡的影视| 日韩午夜激情视频| 欧美在线观看视频一区二区| 日韩精品91亚洲二区在线观看 | 国产区在线观看成人精品| 色天使色偷偷av一区二区| 韩国av一区二区三区四区| 亚洲高清在线精品| 国产精品五月天| 久久精品在线观看| 欧美一区二区三区影视| 欧美午夜寂寞影院| 色哟哟一区二区| 9i看片成人免费高清| 成人免费视频国产在线观看| 国产91高潮流白浆在线麻豆| 奇米精品一区二区三区在线观看| 日韩毛片视频在线看| 中文字幕在线观看一区二区| 国产欧美一区二区在线| 欧美精品一区男女天堂| 久久众筹精品私拍模特| 精品国产乱码久久久久久蜜臀| 欧美在线你懂得| 欧美一区二区三区免费视频| 欧美图片一区二区三区| 欧美日韩亚洲另类| 欧美成人a∨高清免费观看| 国产原创一区二区三区| 久久99最新地址| 99久久国产综合色|国产精品| 欧美在线观看禁18| 欧美三级电影精品| 精品卡一卡二卡三卡四在线| 国产视频一区二区在线|