当要更新的条件取决于另一个表的值时,如何更新表中的列

时间:2019-05-16 08:56:15

标签: sql sql-server

我想更新“ A”表的交付状态,但条件取决于“ A”表和“ B”表的值。

我所做的是我使用了选择查询来查看两个表中具有交付状态为NULL的项目列表。

SELECT B.col1, A.Col2, A.Col3
FROM A,
     B
WHERE A.col3 = '1234'
  AND A.col4 = "Ready"
  AND A.col5 = B.col6
  AND A.Delivery_status IS NULL

我试图像这样直接更新它,但似乎不起作用。

Update A
SET A.Status = 'Delivered'
FROM A,
     B 
WHERE A.col3 = '1234'
  AND A.col4 = "Ready"
  AND A.col5 = B.col6
  AND A.Delivery_status IS NULL

因此,在使用select命令检索了这些值之后,我想通过将传递状态设置为“已传递”来更新它们。构架该查询的正确方法是什么?

编辑:BTW正在使用MS SQL Server

1 个答案:

答案 0 :(得分:0)

只需在更新时删除A in from子句,如下所示:

Update A SET Status = 'Delivered' FROM B
WHERE 
  A.col5 = B.col6
  AND A.col3 = '1234'
  AND A.col4 = 'Ready'
  AND A.Delivery_status IS NULL