如何实现两表按ID关联后仅将姓名变更的新姓氏填入差异列?
实现逻辑
- 以旧姓名表为左表,和新姓名表通过
ID字段做左关联,确保旧表所有记录都能完整保留 - 新增
Discrepancies字段时做条件判断:如果两张表同ID记录的Last Name值不一致,就填入新表的姓氏,否则留空
参考SQL代码
假设旧姓名表名为old_names,新姓名表名为new_names,SQL语句如下:
SELECT o.`Last Name`, o.`First Name`, o.ID, CASE WHEN o.`Last Name` <> n.`Last Name` THEN n.`Last Name` ELSE '' END AS Discrepancies FROM old_names o LEFT JOIN new_names n ON o.ID = n.ID ORDER BY o.ID;
如果需要空值返回NULL而非空字符串,把ELSE ''替换为ELSE NULL即可,输出结果和需求完全匹配。
内容的提问来源于stack exchange,提问作者user35131
相关产品推荐
相关产品推荐

