根据更新的表格制定UPDATE..SET

时间:2016-05-02 14:44:42

标签: sql-server sql-server-2008-r2

我想进行如下更新:

Update Table_A As a
set COLUMN_1=
     (SELECT COLUMN_4 From TABLE_B as b
      WHERE b.COLUMN_2 = a.COLUMN_3)

但我不能使用" As"在" UPDATE"线。那我怎么做这种类型的更新?

编辑: 使用内部联接我得到错误"将varchar数据类型转换为日期时间数据类型导致超出范围的值。"将日期值分配给日期值时?! Null值会导致这种麻烦吗? 使用IsDate()只有null值是源列中的非日期值。

EDIT2:

Update a
set a.COLUMN_1 = b.COLUMN_4
from Table_A as a
inner join TABLE_B as b on b.COLUMN_2 = a.COLUMN_3
where b.COLUMN_5=17 and c.COLUMN_6 is not null

3 个答案:

答案 0 :(得分:0)

只需使用相应的值连接表,并使用别名来引用要更新的表:

UPDATE a
SET COLUMN_1 = b.COLUMN_4
FROM Table_A AS a
INNER JOIN TABLE_B AS b
ON b.COLUMN_2 = a.COLUMN_3 

答案 1 :(得分:0)

试试这个......

Update a
set a.COLUMN_1 = b.COLUMN_4
from Table_A as a
inner join TABLE_B as b on b.COLUMN_2 = a.COLUMN_3

诺尔

答案 2 :(得分:0)

如果您想不惜任何代价使用子查询,那么您应该在此查询的查询中使用表名本身而不是别名。 此处问题中的查询将被翻译为

Update Table_A
set COLUMN_1=
              (SELECT COLUMN_4 From TABLE_B as b
               WEHERE b.COLUMN_2 = Table_A.COLUMN_3)