SQL group by去重復(fù)且按照其他字段排序的操作
需求:
合并某一個(gè)字段的相同項(xiàng),并且要按照另一個(gè)時(shí)間字段排序。
例子:

一開始用
select city from table group by city order by date desc
會(huì)報(bào)錯(cuò)因?yàn)閐ate沒有包含在聚合函數(shù)或 GROUP BY 子句中
然后用將date放入group by中:
select city from table group by city,date order by date desc
得到結(jié)果

但是得到的結(jié)果還是有重復(fù)的,沒有解決
如果不按照時(shí)間排序,就會(huì)影響我之后的操作,所以百度了很久,終于找到了解決方法:
正確寫法:
select city from table group by city order by max(date) desc
發(fā)現(xiàn)很神奇的結(jié)果出來(lái)了

然后又找了一些資料,發(fā)現(xiàn)max()神奇的地方:
select city,max(date) as d1 from table group by city,d1 order by d1 desc

這里寫在前面還能看到時(shí)間排序
如果還有更好的方法大家一起交流。
補(bǔ)充:MYSQL中去重,DISTINCT和GROUP BY的區(qū)別
例如有如下表user:

distinct會(huì)過(guò)濾掉它后面每個(gè)字段都重復(fù)的記錄
用distinct來(lái)返回不重復(fù)的用戶名:select distinct name from user;,結(jié)果為:

用distinct來(lái)返回不重復(fù)的name和id:select distinct name,id from user;,結(jié)果為:

distinct name,id 這樣的寫法,mysql 會(huì)認(rèn)為要過(guò)濾掉name和id兩個(gè)字段都重復(fù)的記錄。
如果sql這樣寫:
select id,distinct name from user
這樣mysql會(huì)報(bào)錯(cuò),因?yàn)閐istinct必須放在要查詢字段的開頭。
group by則可以在要查詢的多個(gè)字段中,針對(duì)其中一個(gè)字段去重 :
select id,name from user group by name;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
openEuler?RPM方式安裝MySQL8的實(shí)現(xiàn)
本文主要介紹了openEuler?RPM方式安裝MySQL8的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
MySQL數(shù)據(jù)庫(kù)下用戶及用戶權(quán)限配置
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)下用戶及用戶權(quán)限配置的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
Mysql數(shù)據(jù)庫(kù)報(bào)錯(cuò)2003?Can't?connect?to?MySQL?server?on?
最近在用mysql,打開mysql的圖形化界面要連接時(shí)出現(xiàn)2003錯(cuò)誤,所以下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫(kù)報(bào)錯(cuò)2003?Can't?connect?to?MySQL?server?on?'localhost'?(10061)的解決方式,需要的朋友可以參考下2022-09-09
MySQL基礎(chǔ)入門之Case語(yǔ)句用法實(shí)例
case語(yǔ)句是mysql中的一個(gè)條件語(yǔ)句,可以在字段中使用case語(yǔ)句進(jìn)行復(fù)雜的篩選以及構(gòu)造新的字段,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)入門之Case語(yǔ)句用法的相關(guān)資料,需要的朋友可以參考下2022-08-08
Mysql根據(jù)某層部門ID查詢所有下級(jí)多層子部門的示例
這篇文章主要介紹了Mysql根據(jù)某層部門ID查詢所有下級(jí)多層子部門的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
dubbo中zookeeper請(qǐng)求超時(shí)問(wèn)題:mybatis+spring連接mysql8.0.15的配置
這篇文章主要介紹了dubbo中zookeeper請(qǐng)求超時(shí)問(wèn)題:mybatis+spring連接mysql8.0.15的配置,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
如何添加一個(gè)mysql用戶并給予權(quán)限詳解
在很多時(shí)候我們并不會(huì)直接利用mysql的root用戶進(jìn)行項(xiàng)目的開發(fā),一般我們都會(huì)創(chuàng)建一個(gè)具有部分權(quán)限的用戶,下面這篇文章主要給大家介紹了關(guān)于如何添加一個(gè)mysql用戶并給予權(quán)限的相關(guān)資料,需要的朋友可以參考下2023-03-03
Mysql select in 按id排序?qū)崿F(xiàn)方法
有時(shí)候我們?cè)诤笈_(tái)選擇了一系列的id,我們想安裝填寫id的順序進(jìn)行排序,那么就需要下面的order by方法,測(cè)試通過(guò)2013-03-03
簡(jiǎn)單講解MySQL的數(shù)據(jù)庫(kù)復(fù)制方法
這篇文章主要介紹了簡(jiǎn)單講解MySQL的數(shù)據(jù)庫(kù)復(fù)制方法,利用到了常見的mysqldump工具,需要的朋友可以參考下2015-11-11
mysql間隙鎖加鎖11個(gè)規(guī)則(案例分析)
這篇文章主要介紹了mysql間隙鎖加鎖11個(gè)規(guī)則?,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03

