繁体   English   中英

如何从一张表中找到不匹配的记录

[英]how to find unmatched record from one table

我有一个餐桌学生。

id   | name | age | email | address
------------------------------
 1   | abc  | 20  | abc@gmail.com  |  street number10
------------------------------
 2   | def  | 25  | def@gmail.com  |  street number12
------------------------------
 3   | hjk  | 20  | hjk@gmail.com  |  street number10
------------------------------
 4   | umnnn  | 20  | umnn@gmail.com  |  street number10

我想匹配行并想要不匹配的记录。

例:

第3rd(id = 3)行应与第4行(id = 4)匹配,并且应仅给出第4行的不匹配值,意味着id = 4,name = umnn,email = umnn @ gmail.com的值仅是,而不应该是年龄和地址。

第2nd(id = 2)行应与第3rd(id = 3)相匹配,并且应仅给出第3行的不匹配值,意味着id = 3,name = hkj,age = 20,email = hkj @ gmail.com,地址=街道号10。

并且像这样第一行和第二行应该匹配,并且应该仅给出第二行的id,name,age,email的值。

您可以使用自我加入来做到这一点

select t1.id,case when t1.name!=t2.name then t1.name else NULL end as name 
       ,case when t1.age!=t2.age then t1.age else NULL end as age
       ,case when t1.email!=t2.email then t1.email else NULL end as email
       ,case when t1.address!=t2.address then t1.address else NULL end as address
from test t1
inner join test t2
on t1.id=t2.id+1

SQL小提琴演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM