Sql 使用多个联接更新表

Sql 使用多个联接更新表,sql,postgresql,sql-update,Sql,Postgresql,Sql Update,我不是一个真正的SQL人,所以任何帮助都将不胜感激。当字段在一列上匹配而在另一列上不匹配时,我尝试更新表: UPDATE dleads SET mag_name = magazines.mag_name FROM magazines WHERE dleads.umc = magazines.umc and dleads.mag_name <> magazines.mag_name UPDATE-dleads 设置杂志名称=杂志。杂志名称 杂志 其中,dleads.umc=杂志.um

我不是一个真正的SQL人,所以任何帮助都将不胜感激。当字段在一列上匹配而在另一列上不匹配时,我尝试更新表:

UPDATE dleads
SET mag_name = magazines.mag_name
FROM magazines
WHERE dleads.umc = magazines.umc and
dleads.mag_name <> magazines.mag_name
UPDATE-dleads
设置杂志名称=杂志。杂志名称
杂志
其中,dleads.umc=杂志.umc和
dleads.mag_name杂志.mag_name

我可以让
选择
工作,但不能让
更新

您的查询在处理空值时不可靠

您可以使用此选项:


从其中dleads.umc=magazies.umc的杂志更新dleads SET mag_name=magazies.mag_name,并合并(dleads.mag_name“”)合并(magazies.mag_name“”)

您的查询看起来与您描述的完全一样:

UPDATE dleads d
SET    mag_name = m.mag_name
FROM   magazines m
WHERE  d.umc = m.umc
AND    d.mag_name <> m.mag_name;

旁白:您在标题中提到了“多个连接”,但我在您的查询中只看到一个连接。

一切看起来都正常。你有什么错误吗?您选择返回记录的查询是什么样子的?每个
dleads.mag_name
是否会返回多条记录?您的查询应该可以工作。请详细说明“不工作”的真正含义。
UPDATE dleads d
SET    mag_name = m.mag_name
FROM   magazines m
WHERE  d.umc = m.umc
AND    d.mag_name IS DISTINCT FROM m.mag_name;