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