几种判断2表重复数据的相关语句

来源:互联网 发布:苹果电脑安装mac系统 编辑:程序博客网 时间:2024/06/13 00:29

实例用表结构:

 

---  表一

 

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
-----------------
A1B1A1B1
A2B2A2B2
A3B3A3B3
A3B3A3B3
A4B4NULLNULL
A4B4NULLNULL
语句四:
SELECT * FROM TEST1 O RIGHT JOIN TEST2 T
ON O.A = T .A
结果:
 A   B   A  B
-----------------
A1B1A1B1
A2B2A2B2
A3B3A3B3
A3B3A3B3
二、取出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

 

 

 

 

 

原创粉丝点击