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

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

Student_1

Student_2

方法一 — 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 ;  

原文出处:teakki -> https://www.teakki.com/p/57e22e14a16367940da64068

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。