我有一张桌子学生。
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
我希望匹配行并希望获得无与伦比的记录。
实施例
第3行(id = 3)应与第4行(id = 4)匹配,并且只应给出第4行的不匹配值,表示id = 4,name = umnn,email = columnn @gmail.com,不应该是年龄和地址。
第2行(id = 2)应与第3行(id = 3)匹配,并且只应给出第3行的不匹配值,表示id = 3,name = hkj,age = 20,email = hkj @ gmail的值.com,地址=街道号码10。
并且应该匹配第1行和第2行,并且应该给出第2行id,名称,年龄,仅限电子邮件的值。
答案 0 :(得分:1)
您可以使用自联接
执行此操作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