Postgres UPDATE 使用 CASE 和 RETURNING 返回所有行

Meh*_*hdi 4 sql postgresql sql-update sql-returning

我在 postgres 中执行以下查询:

 UPDATE products SET dealer_id = 
                        CASE
                             WHEN order_id = 7 THEN '1' 
                             WHEN order_id = 6 THEN '2' 
                             ELSE dealer_id
                        END 
                        RETURNING id 
Run Code Online (Sandbox Code Playgroud)

我希望获得更新行的 id,如 [3,4,5],但它返回所有行 id

我的查询有什么问题吗?

Mik*_*ll' 9

您正在更新所有行。

  • 当 order_id 为“7”时,您将 Dealer_id 设置为 1。
  • 当 order_id 为“6”时,您将 Dealer_id 设置为 2。
  • 对于 order_id 的所有其他值,您将 Dealer_id 设置为 Dealer_id。(这似乎是一件奇怪的事情。)

如果没有更多信息,我不愿意提出任何建议,但这可能更接近您想要的。

UPDATE products 
SET dealer_id = CASE
                    WHEN order_id = 7 THEN '1' 
                    WHEN order_id = 6 THEN '2' 
                END 
WHERE order_id in (7, 6)
RETURNING id 
Run Code Online (Sandbox Code Playgroud)