幾種判斷2表重複資料的相關語句

2021-05-23 10:50:23 字數 2028 閱讀 4986

例項用表結構:

---  表一

if object_id('test1') is not null drop table test1

create table test1(a varchar(8),b varchar(8))

insert into test1

select 'a1','b1' union all

select 'a2','b2' union all

select 'a3','b3' union all

select 'a3','b3' union all

select 'a4','b4' union all

select 'a4','b4'

結果:a     b

a1   b1

a2   b2

a3   b3

a3   b3

a4   b4

a4   b4

-- 表2

if object_id('test2') is not null drop table test2

create table test2(a varchar(8), b varchar(8))

insert into test2

select 'a1','b1' union all

select 'a2','b2' union all

select 'a3','b3' 

結果:a     b

a1   b1

a2   b2

a3   b3

一、取出2表相同資料:

-- 語句一:

select * from test1

intersect

select * from test2

結果:a     b

a1   b1

a2   b2

a3   b3

缺點:無法知道是否有重複的資料。

-- 語句二:

select * from test1 where checksum(a) in

(select checksum(a) from test2)

結果:a     b

a1   b1

a2   b2

a3   b3

a3   b3

語句三:

select * from test1 o left join test2 t

on o.a = t .a

結果:a   b   a  b

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

a1 b1

a1b1 a2

b2a2

b2 a3

b3a3

b3 a3

b3a3

b3 a4

b4null

null a4

b4null

null

語句四:

select * from test1 o right join test2 t

on o.a = t .a

結果:a   b   a  b

----------------- a1

b1a1

b1a2

b2a2

b2a3

b3a3

b3a3

b3a3

b3

二、取出2表不同的資料

-- 語句一:

select * from test1

except

select * from test2

結果:a     b

a4   b4

-- 語句二:

select * from test1 where checksum(a) not in

(select checksum(a) from test2)

結果:a     b

a4   b4

a4   b4

表中重複資料的處理

表中重複資料的處理 說明 tabname為有重複資料的表名,tabname new為新建的表名 1.create table tabname new 2.alter table tabname new add constraints primary key 唯一索引列 constraint tabl...

判斷List列表中重複資料的個數

判斷list列表中重複資料的個數.很簡單乙個邏輯,寫下留做筆記 public class listrepeat listlist new arraylist mapmap new hashmap for string value stringbuf collections.frequency col...

oracle刪除表中的重複資料

遇到這麼個問題,有一張表test,其中有id,name,age,address,等字段,其中id值主鍵,現在要刪除表test中name和age,相同的重複資料,只保留一條即可。這是乙個比較常用的sql但是我一下沒寫出來,回頭想想這就是乙個簡單的巢狀子查詢的例項。sql delete test a w...