SQL除了比较命令

时间:2018-03-09 07:36:24

标签: mysql sql sql-server

我有两张桌子,一张"之前" """"表。这两个表的结构相同。我想确定这两个记录之间的记录差异。意思是"之前是否有记录"在""之后更改的表格#34;表,我想选择那条记录。在调查之后我发现我可以使用EXCEPT命令来执行此操作,但是存在问题。我"之前的主键是#34;表格在我的""之后发生变化表,这意味着它将返回"之前的所有记录。表纯粹是因为主键发生了变化。如何让EXCEPT命令忽略主键但比较其他所有内容?我仍然希望返回的SELECT语句中包含主键,因此在编写EXCEPT语句时我不能忽略该键。以下是我的代码示例:

我希望它比较两个表中除主键之外的所有属性,因为即使记录在前后表中相同,它也会改变。

SELECT * FROM BEFORE
EXCEPT
SELECT * FROM AFTER

基于下表: enter image description here

此查询将返回整个表,因为主键不同。如何让EXCEPT语句忽略主键,同时还要在比较其他所有内容时返回主键?

谢谢!

1 个答案:

答案 0 :(得分:0)

select a.pkey, a.attr1, a.attr2 from before a  
left outer join after b  
on(a.attr1 = b.attr1) and  ( a.attr2 = b.attr2)  
where b.attr1 is null and b.attr2 is null  

您可以使用此方法获得所需的输出。