網站首頁 編程語言 正文
實現數據去重有兩種方式 :distinct 和 group by
1.distinct消除重復行
distinct支持單列、多列的去重方式。
單列去重的方式簡明易懂,即相同值只保留1個。
多列的去重則是根據指定的去重的列信息來進行,即只有所有指定的列信息都相同,才會被認為是重復的信息。
(1)作用于單列
select distinct name from A //對A表的name去重然后顯示
(2)作用于多列
select distinct id,name from A //對A表的id和name去重然后顯示
注意,distinct作用于多列的時候只在開頭加上即可,并不用每個字段都加上。
? distinct必須在開頭,在中間是不可以的,會報錯。
select id,distinct name from A //錯誤
(3)配合count使用
select count(distinct name) from A //對A表的不同的name進行計數
2.group by 分組語句
select name from A group by name //跟上述等價,對name分組,相當于去重。
?在使用group by的時候,前邊一般會有聚合語句,例如sum,一些沒有聚合的字段必須要加到group by 后邊。
select a,sum(b) from A group by a //后邊必須要有a,否則報錯
3.區別
?其實二者沒有什么可比性,但是對于不包含聚集函數的GROUP?BY操作來說,和DISTINCT操作是等價的。不過雖然二者的結果是一樣的,但是二者的執行計劃并不相同。
?distinct只是將重復的行從結果中出去;?
?group?by是按指定的列分組,一般這時在select中會用到聚合函數。
?distinct是把不同的記錄顯示出來。?
?group?by是在查詢時先把紀錄按照類別分出來再查詢。
?group?by?必須在查詢結果中包含一個聚集函數,而distinct不用。
總結
原文鏈接:https://www.cnblogs.com/zzhangyuhang/p/8778952.html
相關推薦
- 2022-09-25 Clion配置STM32開發環境printf函數打印浮點數快速設置方法
- 2022-03-26 docker?registry?私有倉庫的搭建過程_docker
- 2022-07-10 css中border屬性設置
- 2022-07-12 Linux下Redis6集群安裝部署指南
- 2022-06-26 Android開發快速實現底部導航欄示例_Android
- 2022-07-22 python:實現從給定的子串列表返回包含所有可能的列表算法(附完整源碼)
- 2021-11-12 C語言打印某一年中某月的日歷_C 語言
- 2022-07-23 C語言實例實現二叉搜索樹詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支