我不是一个真正的SQL人,所以任何帮助,将不胜感激。我试图更新表时域匹配一列,不会在另一:更新表与多个连接
UPDATE dleads
SET mag_name = magazines.mag_name
FROM magazines
WHERE dleads.umc = magazines.umc and
dleads.mag_name <> magazines.mag_name
我可以得到SELECT
工作,但不是UPDATE
。
我不是一个真正的SQL人,所以任何帮助,将不胜感激。我试图更新表时域匹配一列,不会在另一:更新表与多个连接
UPDATE dleads
SET mag_name = magazines.mag_name
FROM magazines
WHERE dleads.umc = magazines.umc and
dleads.mag_name <> magazines.mag_name
我可以得到SELECT
工作,但不是UPDATE
。
您的查询在处理NULL值时不健壮。
你也可以使用这样的:
UPDATE dleads SET mag_name = magazines.mag_name从杂志WHERE dleads.umc = magazines.umc和接合(dleads.mag_name, '')<> COALESCE(magazines.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;
最常见的事情被忽略这里将NULL值。如果mag_name
可以在两个表是空的,你无论如何要更新,使用NULL安全IS DISTINCT FROM
:
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;
旁白:你提到“多连接”的称号,但我只看到一个单加入您的查询。
一切看起来不错。你有什么错误吗?你是什么SELECT查询看起来像返回记录?您是否通过'dleads.mag_name'获得了多个记录? – JNevill
您的查询应该可以正常工作。请详细说明“不工作”的真正含义。 –
[你有你的答案吗?](http://meta.stackexchange.com/a/5235/169168) –