處理表重複記錄(查詢和刪除)
宣告:下面的所有SQL語句都來自CSDN的帖子處理表重複記錄(查詢和刪除)裡,然後自己在整理出來的
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> 1 --處理表重複記錄(查詢和刪除)
2 /******************************************************************************************************************************************************
3 1、Num、Name相同的重複值記錄,沒有大小關係只保留一條
4 2、Name相同,ID有大小關係時,保留大或小其中一個記錄
5 ******************************************************************************************************************************************************/
6
7 --1、用於查詢重複處理記錄(如果列沒有大小關係時2000用生成自增列和臨時表處理,SQL2005用row_number函式處理)
8
9 --> --> (Roy)生成測試資料
10
11 if not object_id('Tempdb..#T') is null
12 drop table #T
13 Go
14 Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2))
15 Insert #T
16 select 1,N'A',N'A1' union all
17 select 2,N'A',N'A2' union all
18 select 3,N'A',N'A3' union all
19 select 4,N'B',N'B1' union all
20 select 5,N'B',N'B2'
21 Go
22
23
24 --I、Name相同ID最小的記錄(推薦用1,2,3),方法3在SQl05時,效率高於1、2
25 --方法1:
26 Select * from #T a where not exists(select 1 from #T where Name=a.Name and ID<a.ID)
27
28 --方法2:
29 select a.* from #T a join (select min(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID
30
31 --方法3:
32 select * from #T a where ID=(select max(ID) from #T where Name=a.Name)
33
34 --方法4(注:ID為唯一時可用):
35 select * from #T a where ID in(select min(ID) from #T group by Name)
36
37 --SQL2005:
38
39 --方法5:
40 select ID,Name,Memo from (select *,min(ID)over(partition by Name) as MinID from #T a)T where ID=MinID
41
42 --方法6:
43
44 select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID) as MinID from #T a)T where MinID=1
45
46 --生成結果:
47 /*
48 ID Name Memo
49 ----------- ---- ----
50 1 A A1
51 4 B B1
52
53 (2 行受影響)
54 */
55
56
57 --II、Name相同ID最大的記錄,與min相反:
58 --以上面的min相反,只要將min改為max,小號改為大於號即可
59
60 --2、刪除重複記錄有大小關係時,保留大或小其中一個記錄
61
62
63 --I、Name相同ID最小的記錄(推薦用1,2,3),保留最小一條
64 --在上面的基礎上,將select 改為delete即可,
65 --例如方法1 改 為;
66 delete a from #T a where exists(select 1 from #T where Name=a.Name and ID<a.ID)
67
68
69 --3、刪除重複記錄沒有大小關係時,處理重複值
70 方法1:
71 if object_id('Tempdb..#') is not null
72 drop table #
73 Select distinct * into # from #T--排除重複記錄結果集生成臨時表#
74
75 truncate table #T--清空表
通過上面這些語句,在日常中即可以很容易處理表重複的問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-616843/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql語句查詢指定重複記錄和刪除重複記錄僅保留一條【親測可以】MySql
- 刪除重複id的記錄
- Oracle如何刪除表中重複記錄保留第一條Oracle
- MariaDB刪除重複記錄效能測試
- sql刪除重複記錄只保留一條SQL
- MySQL刪除重複記錄並保留第一條MySql
- PostgreSQL刪除表中重複資料SQL
- sql根據多個欄位查詢重複記錄SQL
- mysql 跨表查詢、更新、刪除示例MySql
- mysql 刪除表中重複的資料MySql
- 查詢/刪除重複的資料(單個欄位和多個欄位條件)
- mysql刪除查詢MySql
- Oracle中刪除表中的重複資料Oracle
- mysql 刪除重複項MySql
- 刪除oracle重複值Oracle
- JavaScript 刪除重複字元JavaScript字元
- 刪除重複資料
- OpenCV4影像處理--影像查詢表和顏色表OpenCV
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- mongodb刪除重複資料MongoDB
- VSCode刪除重複的空行VSCode
- JavaScript 刪除字串重複字元JavaScript字串字元
- mysql連表查詢出現資料重複MySql
- Mysql-基本練習(09-刪除單表記錄、查詢指定列資料、列的別名、簡單單表條件查詢、簡單分組查詢)MySql
- mysql支援跨表delete刪除多表記錄MySqldelete
- 單表的更新UPDATE和刪除記錄DELETE(二十六)delete
- Excel查詢重複項Excel
- [Python] Pandas 對資料進行查詢、替換、篩選、排序、重複值和缺失值處理Python排序
- 怎樣新增、刪除、移動、複製、建立、查詢節點
- JavaScript陣列刪除重複元素JavaScript陣列
- sqlserver中刪除重複資料SQLServer
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript刪除字串中重複字元JavaScript字串字元
- 短影片app程式碼,如何實現聯表資料查詢和刪除?APP
- 二叉查詢樹的插入刪除查詢
- oracle表複雜查詢Oracle
- jQuery動態新增和刪除表格記錄jQuery
- JavaScript陣列刪除重複內容JavaScript陣列