如何用SQL实现PoM关联姓名到对应用户全名的填充?
SQL实现PoM与用户全名匹配
假设你的数据表名为pm_table,可以通过以下SQL语句生成包含full_name字段的结果集:
SELECT t.name, t.target_type, CASE WHEN t.target_type = 'User' THEN t.name ELSE u.name END AS full_name FROM pm_table t LEFT JOIN pm_table u ON t.target_type = 'Department' AND u.target_type = 'User' AND u.name LIKE CONCAT('%', SUBSTRING(t.name, 5), '%');
逻辑说明:
- 提取PoM后的名字片段:使用
SUBSTRING(t.name, 5)截取PoM-前缀后的名字部分(PoM-共4个字符,因此从第5位开始截取)。 - 关联匹配用户:通过
LEFT JOIN将Department类型的记录与User类型的记录关联,匹配条件为User的全名包含截取到的名字片段。 - 填充full_name字段:用
CASE WHEN判断记录类型,User类型直接使用自身姓名,Department类型则取关联到的用户全名。
注意事项:
如果存在多个用户匹配同一个PoM片段的情况,需要调整匹配逻辑(例如改为匹配用户姓名的开头部分u.name LIKE CONCAT(SUBSTRING(t.name, 5), '%')),确保关联的唯一性。
内容的提问来源于stack exchange,提问作者NewbieWizzy
相关产品推荐
相关产品推荐

