成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL中刪除重復數據問題

運維 數據庫運維
我們數據庫中最后要保留的結果就是第二步中查詢出來的數據,我們把其他的數據刪除即可。怎么刪除呢?我們使用ID來排除。

[[437524]]

本文轉載自微信公眾號「SQL數據庫開發」,作者丶平凡世界  。轉載本文請聯系SQL數據庫開發公眾號。

需求分析

數據庫中存在重復記錄,刪除保留其中一條(是否重復判斷基準為多個字段)

解決方案

碰到這樣的問題我們先分解步驟來看

  • 創建測試數據
  • 找到重復的數據
  • 刪除重復的數據并且保留一行

創建測試數據

我們創建一個人員信息表并在里面插入一些重復的數據。

  1. CREATE TABLE [dbo].[Person]( 
  2.  [ID] [INT] IDENTITY(1,1) NOT NULL
  3.  [Name] [VARCHAR](20) NULL
  4.  [Age] [INTNULL
  5.  [Address] [VARCHAR](20) NULL
  6.  [Sex] [CHAR](2) NULL 
  7. ); 
  8.  
  9. SET IDENTITY_INSERT [dbo].[Person] ON
  10. INSERT INTO [dbo].[Person] (ID,Name,Age,Address,Sex) 
  11. VALUES 
  12. ( 1, '張三', 18, '北京路18號''男' ), 
  13. ( 2, '李四', 19, '北京路29號''男' ), 
  14. ( 3, '王五', 19, '南京路11號''女' ), 
  15. ( 4, '張三', 18, '北京路18號''男' ), 
  16. ( 5, '李四', 19, '北京路29號''男' ), 
  17. ( 6, '張三', 18, '北京路18號''男' ), 
  18. ( 7, '王五', 19, '南京路11號''女' ), 
  19. ( 8, '馬六', 18, '南京路19號''女' ); 
  20. SET IDENTITY_INSERT [dbo].[Person]  OFF

(提示:可以左右滑動代碼)

建立好測試數據如下:

我們發現除了自增長ID不同以為,有幾條其他字段都重復的數據出現,符合我們的需求。

找出重復的數據

  1. SELECT MAX(ID) ID  , 
  2. Name,Age,Address,Sex 
  3. FROM dbo.Person 
  4. GROUP BY Name,Age,Address,Sex 
  5. HAVING COUNT(1)>1 

HAVING將分組后統計出來的數量大于1的數據行,就是我們要找的重復數據:

上面用Max函數或者Min函數均可,只是為了保證取出來的數據的唯一性。

刪除重復的數據

其實我們數據庫中最后要保留的結果就是第二步中查詢出來的數據,我們把其他的數據刪除即可。怎么刪除呢?我們使用ID來排除。

  1. DELETE  FROM Person 
  2. WHERE  EXISTS 
  3. SELECT * FROM ( 
  4. SELECT  
  5. MAX(ID) ID, 
  6. Name,Age,Address,Sex 
  7. FROM dbo.Person 
  8. GROUP BY Name,Age,Address,Sex 
  9. HAVING COUNT(1)>1) T 
  10. WHERE Person.Name=T.Name 
  11. AND Person.Age=T.Age 
  12. AND Person.Address=T.Address 
  13. AND Person.Sex=T.Sex 
  14. AND Person.ID<T.ID--如果上面使用MIN函數,這里就要改成> 

執行完后重新查詢Person表結果如下:

馬六因為只有一條記錄,所以沒有參與去重,直接顯示。

今天的案例分享結束,小伙伴們可以自己動手嘗試一下,興許工作中也會遇到類似問題。如果你在公眾中遇到一些有趣的問題也可以發送給我。

 

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2010-07-07 16:53:54

SQL Server重

2010-09-02 10:36:51

SQL刪除

2011-04-13 13:05:14

重復數據刪除

2010-07-08 13:06:05

SQL Server刪

2010-07-21 11:38:59

SQL Server重

2010-07-26 14:58:26

SQL Server刪

2010-07-26 09:55:55

SQL Server重

2010-07-23 15:09:42

SQL Server刪

2010-07-01 12:29:27

SQL Server重

2010-07-23 16:21:37

SQL Server重

2023-02-26 23:31:01

SQL數據庫

2009-01-11 17:32:03

Oracle數據庫重復數據

2011-04-13 13:13:09

重復數據刪除

2011-03-14 15:47:33

Oracle數據庫

2010-07-08 13:20:05

SQL Server刪

2024-10-16 17:04:13

2009-02-27 10:18:41

重復數據刪除In-linePost-Proces

2010-11-03 13:50:49

DB2刪除重復數據

2011-03-10 15:06:02

重復數據刪除技術

2015-10-23 16:40:21

DB2刪除數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲九九 | 日韩中文字幕免费在线观看 | 精品国偷自产在线 | 中文字幕日韩欧美一区二区三区 | 99成人 | 日韩中文字幕在线观看视频 | 久久久蜜桃一区二区人 | 一区二区影院 | 亚洲欧美日本在线 | 中文字幕日韩欧美一区二区三区 | 欧美久久视频 | 日韩一区二区在线观看 | 91中文在线观看 | 久久国产日韩 | 国产美女h视频 | 欧美一级三级在线观看 | 欧美精品久久 | 99欧美精品 | 欧美精品v国产精品v日韩精品 | 99精品视频免费观看 | 成人久久久 | 狠狠爱综合网 | 亚洲国产二区 | 亚洲美女一区二区三区 | 久久国产精品视频 | 99在线免费观看 | 久久久久久一区 | 精品一区二区三区在线观看国产 | 日韩精品区 | 亚洲成人毛片 | 北条麻妃国产九九九精品小说 | 成人日韩av| 97国产精品视频人人做人人爱 | 亚洲精品成人av久久 | 作爱视频免费观看 | 成人免费av | 亚洲交性| 一级做a爰片性色毛片16美国 | 99国内精品 | 久草视频观看 | 日韩欧美国产精品一区二区三区 |