亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

SQL Server 刪除重復(fù)記錄的幾種方法
來(lái)源:易賢網(wǎng) 閱讀:1478 次 日期:2014-09-17 15:49:40
溫馨提示:易賢網(wǎng)小編為您整理了“SQL Server 刪除重復(fù)記錄的幾種方法”,方便廣大網(wǎng)友查閱!

例如:

id name value

1 a pp

2 a pp

3 b iii

4 b pp

5 b pp

6 c pp

7 c pp

8 c iii

id是主鍵

要求得到這樣的結(jié)果

id name value

1 a pp

3 b iii

4 b pp

6 c pp

8 c iii

方法1

delete YourTable

where [id] not in (

select max([id]) from YourTable

group by (name + value))

方法2

delete a

from 表 a left join(

select id=min(id) from 表 group by name,value

)b on a.id=b.id

where b.id is null

查詢及刪除重復(fù)記錄的SQL語(yǔ)句

查詢及刪除重復(fù)記錄的SQL語(yǔ)句

1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷

select * from people

where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷,只留有rowid最小的記錄

delete from people

where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

3、查找表中多余的重復(fù)記錄(多個(gè)字段)

select * from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有rowid最小的記錄

delete from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重復(fù)記錄(多個(gè)字段),不包含rowid最小的記錄

select * from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

(二)

比方說(shuō)

在A表中存在一個(gè)字段“name”,

而且不同記錄之間的“name”值有可能會(huì)相同,

現(xiàn)在就是需要查詢出在該表中的各記錄之間,“name”值存在重復(fù)的項(xiàng);

Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果還查性別也相同大則如下:

Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

(三)

方法一

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0 方法二

"重復(fù)記錄"有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。

1、對(duì)于第一種重復(fù),比較容易解決,使用

select distinct * from tableName

就可以得到無(wú)重復(fù)記錄的結(jié)果集。

如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

發(fā)生這種重復(fù)的原因是表設(shè)計(jì)不周產(chǎn)生的,增加唯一索引列即可解決。

2、這類重復(fù)問(wèn)題通常要求保留重復(fù)記錄中的第一條記錄,操作方法如下

假設(shè)有重復(fù)的字段為Name,Address,要求得到這兩個(gè)字段唯一的結(jié)果集

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

最后一個(gè)select即得到了Name,Address不重復(fù)的結(jié)果集(但多了一個(gè)autoID字段,實(shí)際寫(xiě)時(shí)可以寫(xiě)在select子句中省去此列)

(四)

查詢重復(fù)

select * from tablename where id in (

select id from tablename

group by id

having count(id) > 1

)

學(xué)習(xí)sql有一段時(shí)間了,發(fā)現(xiàn)在我建了一個(gè)用來(lái)測(cè)試的表(沒(méi)有建索引)中出現(xiàn)了許多的重復(fù)記錄。后來(lái)總結(jié)了一些刪除重復(fù)記錄的方法,在Oracle中,可以通過(guò)唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄;還可以建臨時(shí)表來(lái)實(shí)現(xiàn)...這個(gè)只提到其中的幾種簡(jiǎn)單實(shí)用的方法,希望可以和大家分享(以表employee為例)。

SQL> desc employee

Name Null? Type

----------------------------------------- -------- ------------------

emp_id NUMBER(10)

emp_name VARCHAR2(20)

salary NUMBER(10,2)

可以通過(guò)下面的語(yǔ)句查詢重復(fù)的記錄:

SQL> select * from employee;

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

1 sunshine 10000

2 semon 20000

2 semon 20000

3 xyz 30000

2 semon 20000

SQL> select distinct * from employee;

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

2 semon 20000

3 xyz 30000

SQL> select * from employee group by emp_id,emp_name,salary having count (*)>1

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

2 semon 20000

SQL> select * from employee e1

where rowid in (select max(rowid) from employe e2

where e1.emp_id=e2.emp_id and

e1.emp_name=e2.emp_name and e1.salary=e2.salary);

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

3 xyz 30000

2 semon 20000

2. 刪除的幾種方法:

(1)通過(guò)建立臨時(shí)表來(lái)實(shí)現(xiàn)

SQL>create table temp_emp as (select distinct * from employee)

SQL> truncate table employee; (清空employee表的數(shù)據(jù))

SQL> insert into employee select * from temp_emp; (再將臨時(shí)表里的內(nèi)容插回來(lái))

( 2)通過(guò)唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄.在Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數(shù)據(jù)庫(kù)中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個(gè)數(shù)據(jù)文件、塊、行上。在重復(fù)的記錄中,可能所有列的內(nèi)容都相同,但rowid不會(huì)相同,所以只要確定出重復(fù)記錄中那些具有最大或最小rowid的就可以了,其余全部刪除。

SQL>delete from employee e2 where rowid not in (

select max(e1.rowid) from employee e1 where

e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and e1.salary=e2.salary);--這里用min(rowid)也可以。

SQL>delete from employee e2 where rowid <(

select max(e1.rowid) from employee e1 where

e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and

e1.salary=e2.salary);

(3)也是通過(guò)rowid,但效率更高。

SQL>delete from employee where rowid not in (

select max(t1.rowid) from employee t1 group by

t1.emp_id,t1.emp_name,t1.salary);--這里用min(rowid)也可以。

EMP_ID EMP_NAME SALARY

1 sunshine 10000

3 xyz 30000

2 semon 20000

SQL> desc employee

Name Null? Type

----------------------------------------- -------- ------------------

emp_id NUMBER(10)

emp_name VARCHAR2(20)

salary NUMBER(10,2)

可以通過(guò)下面的語(yǔ)句查詢重復(fù)的記錄:

SQL> select * from employee;

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

1 sunshine 10000

2 semon 20000

2 semon 20000

3 xyz 30000

2 semon 20000

SQL> select distinct * from employee;

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

2 semon 20000

3 xyz 30000

SQL> select * from employee group by emp_id,emp_name,salary having count (*)>1

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

2 semon 20000

SQL> select * from employee e1

where rowid in (select max(rowid) from employe e2

where e1.emp_id=e2.emp_id and

e1.emp_name=e2.emp_name and e1.salary=e2.salary);

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

3 xyz 30000

2 semon 20000

2. 刪除的幾種方法:

(1)通過(guò)建立臨時(shí)表來(lái)實(shí)現(xiàn)

SQL>create table temp_emp as (select distinct * from employee)

SQL> truncate table employee; (清空employee表的數(shù)據(jù))

SQL> insert into employee select * from temp_emp; (再將臨時(shí)表里的內(nèi)容插回來(lái))

( 2)通過(guò)唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄.在Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數(shù)據(jù)庫(kù)中是唯一的,rowid確定了每條記錄是在Oracle中的哪一個(gè)數(shù)據(jù)文件、塊、行上。在重復(fù)的記錄中,可能所有列的內(nèi)容都相同,但rowid不會(huì)相同,所以只要確定出重復(fù)記錄中那些具有最大或最小rowid的就可以了,其余全部刪除。

SQL>delete from employee e2 where rowid not in (

select max(e1.rowid) from employee e1 where

e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and e1.salary=e2.salary);--這里用min(rowid)也可以。

SQL>delete from employee e2 where rowid <(

select max(e1.rowid) from employee e1 where

e1.emp_id=e2.emp_id and e1.emp_name=e2.emp_name and

e1.salary=e2.salary);

(3)也是通過(guò)rowid,但效率更高。

SQL>delete from employee where rowid not in (

select max(t1.rowid) from employee t1 group by

t1.emp_id,t1.emp_name,t1.salary);--這里用min(rowid)也可以。

EMP_ID EMP_NAME SALARY

---------- ---------------------------------------- ----------

1 sunshine 10000

3 xyz 30000

2 semon 20000

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:SQL Server 刪除重復(fù)記錄的幾種方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn)

版權(quán)所有:易賢網(wǎng)

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
美日韩精品免费| 久久午夜激情| 久久国产一区二区| 午夜精品一区二区三区四区 | 一区国产精品| 国产区欧美区日韩区| 六月天综合网| 精品999成人| 亚洲一区日韩在线| 欧美日韩一区二区三| 欧美日韩国产一区精品一区| 亚洲一级特黄| 午夜一区二区三区不卡视频| 国产在线视频欧美一区二区三区| 亚洲精品一级| 久久久久成人精品免费播放动漫| 精品不卡一区二区三区| 免费在线亚洲| 99热免费精品| 国产精品mm| 久久精品观看| 国产欧美日韩亚洲| 韩国亚洲精品| 老牛嫩草一区二区三区日本| 亚洲激情不卡| 欧美午夜精品| 欧美 日韩 国产精品免费观看| 亚洲黄色成人久久久| 欧美日本中文| 欧美一区二视频在线免费观看| av成人天堂| 亚洲欧洲精品一区二区三区波多野1战4 | 国产一区二区三区久久久久久久久 | 一区二区三区免费看| 欧美激情五月| 免费日韩av片| 国产伦精品一区二区三区| 亚洲精品欧洲精品| 亚洲一二区在线| 精品96久久久久久中文字幕无| 午夜日韩视频| 欧美日韩一区在线观看视频| 午夜国产精品视频| 久久综合影音| 国产欧美日韩一区二区三区| 影音国产精品| 国产精品v日韩精品v欧美精品网站| 久久久久看片| 快she精品国产999| 欧美精品一线| 亚洲欧美综合一区| 欧美激情一区二区三区在线视频| 久久久精品五月天| 欧美xxx在线观看| 久久久久国产精品一区二区| 久久精品午夜| 国产精品国产亚洲精品看不卡15 | 亚洲一区精彩视频| 国产女优一区| 噜噜噜91成人网| 欧美精品三区| 亚洲精品国产日韩| 免费在线成人av| 欧美日韩综合网| 日韩一级在线| 欧美一区高清| 999亚洲国产精| 裸体一区二区| 国语精品中文字幕| 国产精品日本| 国产精品jizz在线观看美国| 99精品国产在热久久下载| 久久国产精品亚洲77777| 欧美激情1区2区| 亚洲国产网站| 久久婷婷人人澡人人喊人人爽| 午夜性色一区二区三区免费视频| 国内精品久久久久国产盗摄免费观看完整版| 国模精品娜娜一二三区| 日韩午夜av| 久久综合激情| 日韩亚洲国产欧美| 欧美1区3d| 99精品99| 国产精品二区在线| 久久精品在线| 亚洲精品1234| 欧美区一区二| 亚洲综合电影一区二区三区| 国内外成人免费视频| 麻豆91精品| 99视频精品| 欧美涩涩视频| 久久久精品网| 国产一区二区三区奇米久涩| 国产综合激情| 欧美日韩91| 久久亚洲不卡| 亚洲一区二区动漫| 99热精品在线观看| 亚洲精品一级| 亚洲全部视频| 亚洲电影成人| 亚洲大片av| 在线国产欧美| 在线观看日韩av电影| 欧美激情视频一区二区三区免费| 亚洲一区二区三区四区中文| 正在播放亚洲| 国产精品午夜av在线| 9色精品在线| 亚洲作爱视频| 亚洲开发第一视频在线播放| 亚洲图色在线| 亚洲高清久久| 亚洲精一区二区三区| 亚洲精品1234| 国产日韩精品视频一区二区三区| 99综合精品| 国产精品一二| 亚洲一区bb| 久久成人一区| 亚洲欧美一级二级三级| 欧美久久视频| 黄色欧美日韩| 亚洲精品一级| 亚洲欧美日产图| 久久黄色网页| 欧美日韩ab| 激情久久婷婷| 99日韩精品| 美女久久一区| 黄色成人在线网站| 91久久精品国产91久久性色tv | 黑人巨大精品欧美一区二区小视频| 欧美日韩一区综合| 最新成人av网站| 亚洲欧美bt| 欧美日韩高清在线一区| 国产精品国产亚洲精品看不卡15| 在线 亚洲欧美在线综合一区| av成人免费观看| 另类图片国产| 精品1区2区3区4区| 国产精品一区视频| 欧美日韩1区| 国产欧美午夜| 国模大胆一区二区三区| 国产亚洲精品v| 欧美日韩国产亚洲一区| 99热在线精品观看| 午夜日韩激情| 亚洲在线观看| 在线播放不卡| 欧美国产综合视频| 国产午夜精品在线| 狠狠色狠狠色综合人人| 麻豆91精品| 在线视频精品一区| 国内自拍一区| 久久久青草婷婷精品综合日韩| 亚洲午夜精品久久久久久浪潮 | 亚洲专区一区| 亚洲高清自拍| 欧美精品入口| 久久精品国产第一区二区三区最新章节 | 欧美日韩国产精品一卡| 国产精品免费看| 亚洲一二三区在线| 午夜天堂精品久久久久| 亚洲欧美日韩在线观看a三区| 激情91久久| 午夜精品网站| 女主播福利一区| 美女被久久久| 亚洲综合精品四区| 国产精品日韩高清| 国产欧美日韩综合一区在线播放 | 性欧美暴力猛交另类hd| 日韩视频一区| 99视频国产精品免费观看| 韩日成人av| 国产精品jizz在线观看美国| 欧美 亚欧 日韩视频在线| 久久狠狠婷婷| 麻豆av福利av久久av| 噜噜噜久久亚洲精品国产品小说| 亚洲一区二区三区精品在线观看| 中文精品在线| 亚洲欧美视频| 久久久噜噜噜| 欧美激情第二页| 国产精品s色| 激情综合中文娱乐网| 国产中文一区二区| 影音欧美亚洲| 99亚洲视频| 亚洲欧美精品在线观看| 久久精品电影| 欧美日韩亚洲一区三区| 国产精品国产一区二区| 亚洲国产精品第一区二区| 亚洲每日在线| 免费久久99精品国产自在现线| 美女91精品| 国一区二区在线观看| 日韩天天综合| 性欧美暴力猛交另类hd| 国产精品v欧美精品∨日韩| 亚洲东热激情| 麻豆九一精品爱看视频在线观看免费| 久久久久久久久久久一区| 欧美精品一区二区三区久久久竹菊| 欧美日韩国产不卡在线看| 亚洲国产精品毛片| 亚洲欧美国产不卡| 欧美日韩国产一区精品一区| 91久久精品国产91久久性色tv | 亚洲图片在线| 亚洲一区国产| 亚洲视频综合| 美日韩精品视频| 一区精品久久| 久久久成人网| 最新国产乱人伦偷精品免费网站| 亚洲欧美日韩在线观看a三区| 欧美精品大片| 国产亚洲一区二区三区在线播放| 快she精品国产999| 一区二区三区四区国产| 老牛嫩草一区二区三区日本 | 亚洲久久在线| 欧美日韩理论| 亚洲一区欧美激情| 伊人久久婷婷| 欧美黄色精品| 香蕉久久久久久久av网站| 黄色欧美成人| 欧美精品二区| 香蕉久久夜色精品| 国产日韩欧美在线播放不卡| 狠狠色噜噜狠狠色综合久| 蜜桃av综合| 一区二区冒白浆视频| 黄色在线一区| 国产精品第十页| 欧美激情第10页| 久久裸体视频| 午夜亚洲一区| 国产精品日韩| 国产精品乱子乱xxxx| 亚洲日本精品国产第一区| 国产一区自拍视频| 欧美体内she精视频在线观看| 美女精品网站| 亚洲欧美日韩视频二区| 99成人免费视频| 亚洲国产免费看| 一区视频在线看| 国产精品v亚洲精品v日韩精品| 久久精品成人| 美女黄色成人网| 亚洲欧美日韩另类精品一区二区三区 | 久久亚洲精品欧美| 久久福利电影| 国产精品一区免费观看| 国产日韩亚洲| 国产欧美亚洲一区| 亚洲狼人精品一区二区三区| 亚洲激情一区| 在线亚洲国产精品网站| 一区二区冒白浆视频| 亚洲精品一区二区三| 日韩视频一区| 午夜在线a亚洲v天堂网2018| 亚洲综合欧美| 午夜国产精品视频| 久久综合狠狠| 激情成人综合| 99精品99| 另类激情亚洲| 好吊视频一区二区三区四区 | 蜜桃久久av| 午夜精品婷婷| 亚洲开发第一视频在线播放| 国产伦精品一区二区三区视频孕妇 | 国产区日韩欧美| 免费久久久一本精品久久区| 久久免费一区| 国产精品mm| 国产精品人人爽人人做我的可爱| 免费日韩精品中文字幕视频在线| 女女同性女同一区二区三区91| 欧美日韩高清免费| 中文日韩在线| 欧美精品99| 国产午夜精品在线| 欧美三区在线| 西西人体一区二区| 亚洲香蕉网站| 久久久777| 亚洲欧洲日韩综合二区| 免费精品视频| 亚洲私拍自拍| 久久久久se| 在线天堂一区av电影| 玖玖精品视频| 国产精品久久国产愉拍 | 国产亚洲精品bv在线观看| 欧美粗暴jizz性欧美20| aa级大片欧美三级| 欧美日韩精品免费看| 一本色道久久综合亚洲精品婷婷| 欧美成人日本| 亚洲专区一区二区三区| 影音先锋亚洲电影| 欧美国产高清| 六月婷婷一区| 国产精品亚洲产品| 亚洲国产精品综合| 黑人一区二区| 欧美色图首页| 欧美国产综合| 亚洲欧美视频| 亚洲视频导航| 99精品视频网| 亚洲精品一区二| 亚洲精一区二区三区| 亚洲高清成人| 影音先锋久久精品| 亚洲图色在线| 亚洲国产高清视频| 亚洲国产精品第一区二区三区| 欧美三区视频| 国内成人在线| 永久久久久久| 亚洲黄色天堂| 在线视频一区观看| 国产欧美91| 国产精品一区二区三区四区五区| 亚洲激情自拍| 一本久久综合| 国产三区精品| 六月天综合网| 欧美在线高清| 欧美精品v日韩精品v国产精品| 久久亚洲高清| 久热这里只精品99re8久| 久久久国产精品一区二区三区| 午夜一级久久| 久久久久网站| 欧美日韩免费| 在线观看亚洲| 国产欧美日韩综合一区在线播放| 99精品欧美一区二区三区| 国产日韩欧美精品| 亚洲专区一区| 午夜欧美精品久久久久久久| 国产精品videosex极品| 亚洲高清不卡| 亚洲伊人网站| 欧美日韩亚洲一区在线观看| 精品成人一区| 午夜在线精品偷拍| 欧美日韩在线精品| 在线亚洲伦理| 久久精品系列| 黄色成人精品网站| 一区二区国产精品| 欧美一区1区三区3区公司| 国内自拍一区| 国产一区二区三区的电影| 免费日韩av片| 激情av一区| 午夜在线a亚洲v天堂网2018| 欧美午夜不卡| 亚洲综合国产| 国产精品xvideos88| 国产亚洲激情| 欧美日韩国产综合网| 一区二区三区欧美成人| 久久亚洲综合网| 在线精品观看| 午夜欧美理论片| 国产日韩高清一区二区三区在线| 久久久一二三| 亚洲精品日韩久久| 欧美日韩成人| 久久午夜精品| 国产精品免费一区二区三区观看| 欧美日韩一区在线播放| 国产乱码精品| 中文欧美日韩| 亚洲人久久久| 精品999日本| 国外成人免费视频| 欧美日韩精品综合| 欧美国产综合| 欧美一区二区三区免费看| 国产偷国产偷亚洲高清97cao|