通过 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 查询

SQL 查询数据连接具有它忽略的空值

如何通过 sql 查询在 Oracle 中更新类型为 TIMESTAMP 的列?

Python通过pymysql连接数据库并进行查询和更新SQL方法封装

Sql更新查询[重复]

如何使用变音符号发送 Twitter 状态更新?