这是我在sql server 2008中的查询 -
UPDATE a
SET a.col2 = 'new',
a.col3 = 'www.google.com',
b.col1 = '10'
FROM table a
INNER JOIN table b ON a.col1 = b.col1
WHERE a.col1 = 7
它崩溃,说明“无效的列名b.col1。”
我如何使这项工作?
答案 0 :(得分:9)
您一次只能更新1个表
您需要发布2个更新语句
UPDATE a SET a.col2='new', a.col3='www.google.com'
FROM tablea a INNER JOIN tableb b ON a.col1 = b.col1
WHERE a.col1=7
UPDATE b SET b.col1='10'
FROM tablea a INNER JOIN tableb b ON a.col1 = b.col1
WHERE a.col1=7
答案 1 :(得分:4)
从稍微查看一下你的查询,你在UPDATE语句中有b.Col1。这是不正确的
UPDATE a
SET a.col2='new',
a.col3='www.google.com',
b.col1='10'
FROM @table a INNER JOIN
@table b ON a.col1 = b.col1
WHERE a.col1=7
从UPDATE开始,您一次只能更新1个表
答案 2 :(得分:1)
您的语句是“更新A”,并且您正在尝试更新表B中的列。您可能希望创建一个包含表A和B中列的视图,并对其进行更新。您还可以为表A创建触发器 - 可能是更新表B中相应的连接列的触发器。
答案 3 :(得分:0)
为了根据第二个表中另一列的条件更新1个表中的列值,这对我有用:
UPDATE TableA
SET TableA.col1 = 'dummyVal'
WHERE TableA .ACCID IN (SELECT ACCID FROM TableB WHERE TableB.PRODID LIKE 'XYZ')