通过 SQL 查询更新 PO 状态
Posted
技术标签:
【中文标题】通过 SQL 查询更新 PO 状态【英文标题】:Update PO status by SQL query 【发布时间】:2021-01-29 14:33:37 【问题描述】:我正在尝试将 PO 状态从“r”更新为“c”
下面是提取查询。
update purchase_order
set status = 'c'
where STATUS = 'r' and order_date < '2019-01-01';
可以更新,但现在出现错误消息。我想知道发生了什么?
【问题讨论】:
您应该更新您的问题并将purchase_order
更正为purc_order_line
,因为这是您实际尝试对其运行查询的表。
【参考方案1】:
假设示例 select
给出了您想要更改的所有行,而没有您不想更改的行:
update purchase_order
set status = 'c'
where STATUS = 'r' and order_date < '2020-01-01';
您必须在 select
查询之外的单独语句中执行此操作。
【讨论】:
谢谢乔尔。这是完成的查询吗: select purchase_order.ID, order_date, status from purchase_order where STATUS = 'r' and order_date @LuZhang 不,这是一个单独的声明。 SQL 一次只允许你做一种事情。您不能在同一个语句中同时检索和更新数据。【参考方案2】:SSMS 将默认使用master
表。有一些设置可以更改,但我怀疑在这种情况下,您的问题是查询没有针对正确的数据库运行。
您可以使用 SSMS UI 将数据库从 master
更改为正确的数据库(有一个下拉菜单可以选择运行查询的数据库),或者,将 USE
语句与您的查询合并:
USE [database_name]
GO
UPDATE PURCH_ORDER_LINE
SET [status] = 'c'
WHERE [status] = 'r' and order_date < '2019-01-01'
GO
【讨论】:
以上是关于通过 SQL 查询更新 PO 状态的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 sql 查询在 Oracle 中更新类型为 TIMESTAMP 的列?