我有一个包含FIRSTNAME LASTNAME列的表,我想创建第三列,将这两列合并到FIRSTNAME_LASTNAME中,但是也使用特殊字典来转换某些名称。假设我只想将它应用于FIRSTNAME,例如:
Albert -> Funnyguy, Kathleen -> Nerd, Megan -> Weirdo
所以" Albert Jones"的新专栏行将是" Funnyguy_Jones"。
目前我在psycopg2中通过读取所有行(分批因为数据库很大),使用python字典转换并创建新列,然后使用UPDATE table SET newcol = tmp.newcol FROM (VALUES ...)
等发送更新来执行此操作。由于将其读入python,这非常慢。有什么提示吗?
编辑:并非所有名称都有转换(只有10%的名称有转换,对于那些我想保留原始名称的名称)
答案 0 :(得分:1)
如果left join
有匹配COALESCE
,则会选择t2.newName
,否则您会选择t1.firstName
SELECT t1.firstName,
t1.lastName,
COALESCE(t2.newName, t1.firstName) + '_' + t1.lastName as combinedName
FROM firstTable t1
LEFT JOIN newTable t2
ON t1.firstName = t2.firstName