此问题已在此处有答案:
Oracle SQL: Update a table with data from another table(7个回答)
8天前关闭
如何在一个查询中更新多个表中列?我尝试如下所示,但没有成功。
update orders o
inner join status s on o.order_status_id = s.status_id
set o.ords_stas_id='23'
where o.location='DRS'
and s.stas_enable = '0';
[table](https://i.stack.imgur.com/Sjccj.png)有什么建议吗?
2条答案
按热度按时间bnlyeluc1#
您希望更新位置为DRS且sta_enable = 0的所有订单。一个要更新的表,
WHERE
子句中有两个条件:只是为了提一下:有时候,我们确实有一个查询,它的联接都导致要更新的行和要设置的值。在这种情况下,我们将更新应用于查询。(但在你的陈述中并不是这样的;我们已经知道必须将ID设置为23。如果我们从状态表行中获取要在订单表中设置的ID,情况就是这样。)
我们可以这样写你的更新语句:
这将做与我上面的查询相同的事情,只是以更复杂的方式。但是如果我们想使用状态表中的值,例如用
s.some_id as new_value
替换23 as new_value
,那么这将是编写update语句的适当方式。xxls0lw82#
使用join更新在oracle中不起作用。你需要一个合并语句-