濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > MYSQL GROUP BY用法詳解

MYSQL GROUP BY用法詳解

熱門(mén)標(biāo)簽:外呼系統(tǒng)線路經(jīng)常出問(wèn)題嗎 地圖標(biāo)注百度競(jìng)價(jià) 安陽(yáng)手機(jī)自動(dòng)外呼系統(tǒng)原理是什么 如何辦理400客服電話 地圖標(biāo)注專(zhuān)員入駐 地圖標(biāo)注什么軟件好用 神行者百貨商場(chǎng)地圖標(biāo)注 外呼系統(tǒng)怎樣才能不封號(hào) 西藏地圖標(biāo)注改進(jìn)點(diǎn)

背景介紹

最近在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候因?yàn)殚_(kāi)始考慮不周,所以產(chǎn)生了大量的重復(fù)數(shù)據(jù)。現(xiàn)在需要把這些重復(fù)的數(shù)據(jù)刪除掉,使用到的語(yǔ)句就是Group By來(lái)完成。為了進(jìn)一步了解這條語(yǔ)句的作用,我打算先從簡(jiǎn)單入手。

建一個(gè)測(cè)試表

復(fù)制代碼 代碼如下:
create table test_group(id int auto_increment primary key, name varchar(32), class varchar(32), score int);

查看表結(jié)構(gòu)

desc test_group

插入數(shù)據(jù)

測(cè)試開(kāi)始

我想知道當(dāng)前每一個(gè)班級(jí)里面最高分?jǐn)?shù)的同學(xué)是誰(shuí)。

復(fù)制代碼 代碼如下:
select name, class , max(score) from test_group group by class;

好現(xiàn)在可以插入幾條重復(fù)的數(shù)據(jù)。

復(fù)制代碼 代碼如下:
insert into test_group(name, class, score)values('repeat','B',89);


現(xiàn)在要過(guò)濾掉重復(fù)的數(shù)據(jù),保留最新的那條記錄。一般我們假設(shè)最新的記錄是最后插入的那條,所以它的ID應(yīng)該是最大的那條。

復(fù)制代碼 代碼如下:
select name, class, max(id) from test_group group by name;

可以發(fā)現(xiàn),我們關(guān)注那個(gè)項(xiàng)的重復(fù)性就把它放到gourp by后面。這樣我們就可以過(guò)濾掉那些與這個(gè)項(xiàng)重復(fù)的記錄啦?,F(xiàn)在我們得到了我們需要的數(shù)據(jù),我們下一步就是把那些重復(fù)的數(shù)據(jù)刪除。為了區(qū)分我們過(guò)濾出來(lái)的數(shù)據(jù)記錄與原有的記錄,我們可以給id取一個(gè)別名。

復(fù)制代碼 代碼如下:
select name, class, max(id) as max_id from test_group group by name;

下一步就是把這些關(guān)心的數(shù)據(jù)保留下來(lái),我先把這些數(shù)據(jù)的id提取出來(lái)。因?yàn)檫@個(gè)是唯一確定一條記錄的。

復(fù)制代碼 代碼如下:
select max_id from (select name, class, max(id) as max_id from test_group group by name)b;

下面就是刪除操作了。思路就是刪除那些數(shù)據(jù)ID不在我們查詢(xún)結(jié)果里面的記錄。為了方便操作后對(duì)數(shù)據(jù)的對(duì)比,我先進(jìn)行一次全部查詢(xún)。

復(fù)制代碼 代碼如下:
select * from test_group;

執(zhí)行刪除操作。

復(fù)制代碼 代碼如下:
delete from test_group where id not in (select max_id from (select name, class, max(id) as max_id from test_group group by name)b);

最后查看結(jié)果。

總結(jié)

MySQL操作還是很靈活的,之前一直喜歡用ORM現(xiàn)在感覺(jué)直接使用MYSQL省去了很多事。如果你有更好更高效的方式就請(qǐng)你分享分享吧~~

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Mysql利用group by分組排序
  • MySQL5.7 group by新特性報(bào)錯(cuò)1055的解決辦法
  • sql中 order by 和 group by的區(qū)別
  • mysql group by having 實(shí)例代碼
  • Mysql中錯(cuò)誤使用SQL語(yǔ)句Groupby被兼容的情況
  • mysql使用GROUP BY分組實(shí)現(xiàn)取前N條記錄的方法
  • MySQL優(yōu)化GROUP BY(松散索引掃描與緊湊索引掃描)
  • MySQL分組查詢(xún)Group By實(shí)現(xiàn)原理詳解
  • SQL GROUP BY 詳解及簡(jiǎn)單實(shí)例

標(biāo)簽:貴港 阜陽(yáng) 萍鄉(xiāng) 酒泉 雞西 張掖 衡水 AXB

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MYSQL GROUP BY用法詳解》,本文關(guān)鍵詞  MYSQL,GROUP,用法,詳解,MYSQL,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MYSQL GROUP BY用法詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于MYSQL GROUP BY用法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    蕲春县| 微博| 中江县| 宣武区| 玉田县| 教育| 乳源| 辽阳市| 瓦房店市| 专栏| 南江县| 福泉市| 新蔡县| 文化| 莱芜市| 宣武区| 黄梅县| 阿克陶县| 瑞金市| 三门峡市| 三原县| 翁牛特旗| 宁都县| 宿州市| 安溪县| 新泰市| 珲春市| 江城| 黄平县| 丹江口市| 萝北县| 紫阳县| 济阳县| 图木舒克市| 唐海县| 枣阳市| 浮山县| 新安县| 五华县| 龙陵县| 威信县|