选择作为过滤器的 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 更新表的主要内容,如果未能解决你的问题,请参考以下文章

更新 R Shiny 中的 DT 列过滤器选择

Kettle实战之(2)过滤记录

MS SQL:每 15 分钟将数据流过滤到第一个值

SQL同列多过滤器

如何在 VueJS 中更新表的数据?

使用 Marshmallow 模式过滤 sqlalchemy 表更新