【问题标题】:Update PO status by SQL query通过 SQL 查询更新 PO 状态
【发布时间】: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,因为这是您实际尝试对其运行查询的表。

标签: sql sql-server sql-update


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2023-01-11
    • 2018-09-24
    • 2016-02-29
    • 2010-11-04
    • 2011-12-04
    相关资源
    最近更新 更多