我想进行如下更新:
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
答案 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)