从表b更新表a其中(条件)
问题描述:
全部都是,从表b更新表a其中(条件)
实际上,这是夜晚。晚上11点左右。我的大脑正在关闭,我需要一点帮助,所以我可以完成并回家:)
我有两个表 - 表a和表b。 当两个其他字段匹配时,我需要使用表b中字段的值更新表a中的字段。该表不具备
基本上,我想这样做,每个记录:(一个唯一的ID:
update a
set importantField =
(select b.importantfield
from b
where a.matchfield = b.matchfield
and a.matchfield2 = b.matchfield2
)
where a.matchfield = b.matchfield
and a.matchfield2 = b.matchfield2
或者至少......我觉得这就是我想做的事...
有人可以帮助我,请
答
您可以通过参加在更新这样做:
Update a
Set a.importantField = b.importantField
From a Join b
On a.matchfield = b.matchfield
And a.matchfield2 = b.matchfield2
答
使用:
UPDATE TABLE_A
SET importantField = (SELECT b.importantfield
FROM TABLE_B b
WHERE b.matchfield = matchfield
AND b.matchfield2 = matchfield2)
SQL Server不支持对表的表别名更新,但上面的一个关联查询 - 无需附加的任期将从TABLE_A
值,因为它没有一个表的别名b
这些领域别名。
除此之外,唯一的问题是如果具有与TABLE_A匹配的记录的记录有多个b.importantfield
值。用途:
UPDATE TABLE_A
SET importantField = (SELECT TOP 1
b.importantfield
FROM TABLE_B b
WHERE b.matchfield = matchfield
AND b.matchfield2 = matchfield2)
..但你应该使用一个ORDER BY
一样好,甚至你会得到任何随机b.importantfield
值。
+0
非常感谢您抽出宝贵时间给我写信。我最终没有使用您的解决方案,但无论如何我要感谢您。所以谢谢 :) – 2010-01-28 23:32:51
先生,你是一个天才。 ...我真的很累,不想去做一个加入... 我现在可以回家了,这一切都要感谢你! D – 2010-01-28 23:31:48
@Cosmic:很高兴它适合你...我不得不再次检查这个工作,最近在LINQ里面花了太多时间:) – 2010-01-28 23:47:20
我想你需要为'a设置一个别名'表为了这个工作,或者我错过了什么? – 2016-10-13 12:23:22