我有两个表,一个“之前”和“之后”表。这两个表的结构相同。我想确定这两个记录之间的记录差异。这意味着如果“之前”表中的一条记录在“之后”表中发生更改,我想选择该记录。经过研究后,我发现我可以使用 EXCEPT 命令来执行此操作,但是存在问题。 “之前”表中的主键一旦在“之后”表中发生更改,这意味着它将纯粹因为主键更改而返回“之前”表中的所有记录。如何让 EXCEPT 命令忽略主键但比较其他所有内容?我仍然希望主键包含在返回的 SELECT 语句中,因此在编写 EXCEPT 语句时不能忽略该键。这是我的代码示例:
我希望它比较两个表中除主键之外的所有属性,因为即使前后表中的记录相同,主键也会发生变化。
SELECT * FROM BEFORE
EXCEPT
SELECT * FROM AFTER
此查询将返回整个表,因为主键不同。如何让 EXCEPT 语句忽略主键,同时在比较其他所有内容时仍然返回主键?
谢谢!
最佳答案
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
您可以使用此方法来获得所需的输出。
关于mysql - 用于比较的除命令之外的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49188760/