如何通过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 ;

到此这篇关于如何通过SQL找出2个表里值不同的列的方法就介绍到这了。你比你想象中更勇敢,比你看起来更强大,也比你以为的更聪明。更多相关如何通过SQL找出2个表里值不同的列的方法内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
centos7安装MySQL教程

国产达梦数据库常用SQL语句(上)

MySQL常用SQL查询语句(含复杂SQL查询)

MySQL细数发生索引失效的情况

mysqlenum字段类型的谨慎如何使用