服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|

服务器之家 - 数据库 - Mysql - 如何通过SQL找出2个表里值不同的列的方法

如何通过SQL找出2个表里值不同的列的方法

2019-12-25 15:04MYSQL教程网 Mysql

本篇文章对如何通过SQL找出2个表里值不同的列的方法进行了详细的分析介绍,需要的朋友参考下

以下有两个,他们的结构完全相同,请通过SQL找出不同的

Student_1

NAME

AGE

SCORE

peter

26

100

jack

25

96

daniel

26

48

bark

21

69

 

 

Student_2

NAME

AGE

SCORE

peter

26

89

jack

25

96

daniel

26

48

bark

21

69

 

方法一 -- NOT EXISTS:
 

复制代码代码如下:

SELECT *
FROM Student_1 S1
WHERE NOT EXISTS
  (SELECT *
  FROM Student_2 S2
  WHERE S1.name = S2.name
  AND S1.age    = S2.age
  AND S1.score  = S2.score
  )
UNION ALL
SELECT *
FROM STUDENT_2 S2
WHERE NOT EXISTS
  (SELECT *
  FROM STUDENT_1 S1
  WHERE S1.name = S2.name
  AND S1.age    = S2.age
  AND S1.score  = S2.score
  );

 

方法二 -- MINUS

复制代码代码如下:

(SELECT * FROM Student_1
MINUS
SELECT * FROM Student_2)
UNION ALL
(SELECT * FROM Student_2
MINUS
SELECT * FROM Student_1)
 

 

方法三 -- HAVING GROUP BY

复制代码代码如下:

SELECT DISTINCT name, age, score FROM (
SELECT * FROM Student_1
UNION ALL
SELECT * FROM Student_2
)GROUP BY name, age, score HAVING COUNT(*)=1 ;

延伸 · 阅读

精彩推荐