You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中拆分Reviewer id列并关联表获取姓名填充新列的实现方法

实现思路
  • 首先拆分表1的Reviewer id/s字段,按分隔符; 切割为2个独立的审核人ID,分别作为Name1、Name2的关联键
  • 分别将两个切割后的ID与表2的Reviewer id关联,获取对应人员的First Name和Last name拼接为全名
  • 无匹配ID的场景(比如示例中的126)可按需返回空值或者自定义占位符
示例SQL(通用语法,可根据你使用的数据库调整切割函数即可)
SELECT
  t1.`Reviewer id/s`,
  -- 关联第一个ID取姓名
  CONCAT(t2_1.`First Name`, ' ', t2_1.`Last name`) AS `Name 1`,
  -- 关联第二个ID取姓名
  CONCAT(t2_2.`First Name`, ' ', t2_2.`Last name`) AS `Name 2`
FROM 表1 t1
-- 切割第一个ID关联表2
LEFT JOIN 表2 t2_1 
  ON CAST(TRIM(SUBSTRING_INDEX(t1.`Reviewer id/s`, '; ', 1)) AS UNSIGNED) = t2_1.`Reviewer id`
-- 切割第二个ID关联表2
LEFT JOIN 表2 t2_2
  ON CAST(TRIM(SUBSTRING_INDEX(t1.`Reviewer id/s`, '; ', -1)) AS UNSIGNED) = t2_2.`Reviewer id`

注:如果是PostgreSQL数据库,切割函数替换为SPLIT_PART(t1."Reviewer id/s", '; ', 1)和SPLIT_PART(t1."Reviewer id/s", '; ', 2)即可,SQL Server则用STRING_SPLIT或者SUBSTRING配合CHARINDEX实现。

执行后返回结果示例
Reviewer id/sName 1Name 2
123; 124Apple ABanana B
126; 156NULLOrange I

如果需要直接更新表1的Name1和Name2字段,把SELECT语句换成UPDATE语法即可,MySQL环境示例:

UPDATE 表1 t1
LEFT JOIN 表2 t2_1 
  ON CAST(TRIM(SUBSTRING_INDEX(t1.`Reviewer id/s`, '; ', 1)) AS UNSIGNED) = t2_1.`Reviewer id`
LEFT JOIN 表2 t2_2
  ON CAST(TRIM(SUBSTRING_INDEX(t1.`Reviewer id/s`, '; ', -1)) AS UNSIGNED) = t2_2.`Reviewer id`
SET 
  t1.`Name 1` = CONCAT(t2_1.`First Name`, ' ', t2_1.`Last name`),
  t1.`Name 2` = CONCAT(t2_2.`First Name`, ' ', t2_2.`Last name`);

内容的提问来源于stack exchange,提问作者Hayley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:36:03