选择作为过滤器的 SQL 更新表
Posted
技术标签:
【中文标题】选择作为过滤器的 SQL 更新表【英文标题】:SQL Update table with select as filter 【发布时间】:2021-02-22 10:11:38 【问题描述】:我想过滤“订单”表的选择。“订单”表现在有超过 40k 的行,如果我想使用电源自动化,我在缓冲区问题中运行,所以我只想更新订单在具有特定订单状态的“订单”表中。我有 4 个订单状态需要检查,它们是
'processing_awaiting_shipment'
'processing_awaiting_payment'
'processing_ready_for_pickup'
'processing_awaiting_pickup'
有人可以帮我解决下面脚本中的 WHERE 函数吗?
我现在正在运行的脚本:
SELECT * FROM Orders_Update_Status
SELECT * FROM Orders
UPDATE Per
SET Per.[Bestel Status]=Addr.[Order status],
Per.[Totaal Prijs]=Addr.[Totaal Price]
FROM Orders Per
INNER JOIN Orders_Update_Status Addr ON Per.[Order ID] = Addr.[Order ID]
【问题讨论】:
您使用的是哪种 DBMS 产品? “SQL”只是所有关系数据库使用的一种查询语言,而不是特定数据库产品的名称(并且您的查询是非标准SQL)。请为您正在使用的数据库产品添加tag。 Why should I tag my DBMS 【参考方案1】:这就是你要找的吗?请提供样本数据和所需的输出。由于更新语句的语法,我假设您正在使用 SQL Server。
UPDATE o
SET o.[Bestel Status]=s.[Order status],
o.[Totaal Prijs]=s.[Totaal Price]
FROM Orders o
INNER JOIN Orders_Update_Status s ON s.[Order ID] = o.[Order ID]
WHERE
s.[Order status] IN ('processing_awaiting_shipment', 'processing_awaiting_payment',
'processing_ready_for_pickup','processing_awaiting_pickup')
【讨论】:
完美!就像我想要的那样工作:) 非常感谢!以上是关于选择作为过滤器的 SQL 更新表的主要内容,如果未能解决你的问题,请参考以下文章