共計 821 個字符,預計需要花費 3 分鐘才能閱讀完成。
這篇文章主要講解了“sql 如何查找重復數據”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“sql 如何查找重復數據”吧!
編寫一個 SQL 查詢,查找學生表中所有重復的學生名。
【解題思路】
1. 看到“找重復”的關鍵字眼,首先要用分組函數 (group by),再用聚合函數中的計數函數 count() 給姓名列計數。
2. 分組匯總后,生成了一個如下的表。從這個表里選出計數大于 1 的姓名,就是重復的姓名。
【解題步驟】
方法一
1)創建一個輔助表,將姓名列進行行分組匯總
select 姓名, count(姓名) as 計數
from 學生表
group by 姓名;
2)選出輔助表中計數大于 1 的姓名
select 姓名 from 輔助表
where 計數
3)結合前兩步,將“創建輔助表”的步驟放入子查詢
select 姓名 from
(
select 姓名, count(姓名) as 計數
from 學生表
group by 姓名
) as 輔助表
where 計數
方法二
這時候有的同學可能會想,為什么要這么麻煩創建一個子查詢,不能用這個語句 (將 count 放到 where 字句中) 直接得出答案嗎?
select 姓名
from 學生表
group by 姓名
where count(姓名)
如果我們運行下這個 sql 語句,會報下面的錯誤,問題出在哪里呢?
前面提到聚合函數(count),where 字句無法與聚合函數一起使用。因為 where 子句的運行順序排在第二,運行到 where 時,表還沒有被分組。
如果要對分組查詢的結果進行篩選,可以使用 having 子句。所以,這道題的最優方法如下:
select 姓名
from 學生表
group by 姓名
having count(姓名)
感謝各位的閱讀,以上就是“sql 如何查找重復數據”的內容了,經過本文的學習后,相信大家對 sql 如何查找重復數據這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!