mysql - 用于比较的除命令之外的 SQL

标签 mysql sql sql-server

我有两个表,一个“之前”和“之后”表。这两个表的结构相同。我想确定这两个记录之间的记录差异。这意味着如果“之前”表中的一条记录在“之后”表中发生更改,我想选择该记录。经过研究后,我发现我可以使用 EXCEPT 命令来执行此操作,但是存在问题。 “之前”表中的主键一旦在“之后”表中发生更改,这意味着它将纯粹因为主键更改而返回“之前”表中的所有记录。如何让 EXCEPT 命令忽略主键但比较其他所有内容?我仍然希望主键包含在返回的 SELECT 语句中,因此在编写 EXCEPT 语句时不能忽略该键。这是我的代码示例:

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

SELECT * FROM BEFORE
EXCEPT
SELECT * FROM AFTER

基于下表: enter image description here

此查询将返回整个表,因为主键不同。如何让 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/

相关文章:

mysql - SQL : How to select all parent nodes in Materialized path?

MySQL SELECT 语句,其中请求参数的字符多于数据库中的内容

sql - Phantom LONG 数据类型导致我的 SQL 代码崩溃 - ORA-00997

php - SQL查找表中的特定字符

sql-server - 将行插入表中,只有一列、主键和标识

sql-server - 不使用 CURSORS 从表中获取值

mysql - 多个表与 mysql JOIN

php - 每当我按下任何一个帖子按钮时,只有列表中的第一个按钮会被更新,而不是我按下的特定按钮

sql - 我如何编写单个查询来插入数据

php - 如何更正php mysql查询