我想在更新某些內容后回傳具有多個連接和 with 子句的查詢。
例如我的查詢是:
WITH orders AS (
SELECT product_id, SUM(amount) AS orders
FROM orders_summary
GROUP BY product_id
)
SELECT p.id, p.name,
p.date_of_creation,
o.orders, s.id AS store_id,
s.name AS store_name
FROM products AS p
LEFT JOIN orders AS o
ON p.id = o.product_id
LEFT JOIN stores AS s
ON s.id = p.store_id
WHERE p.id = '1'
| ID | 姓名 | 日期 | 訂單 | 店鋪編號 | 店名 |
|---|---|---|---|---|---|
| 1個 | 筆 | 11/16/2022 | 10 | 1個 | jj |
| 2個 | 鉛筆 | 11/10/2022 | 30 | 2個 | ff |
我想回傳確切的查詢,但在我的更新中有更新的結果:
UPDATE products
SET name = 'ABC'
WHERE id = '1'
RETURNING up_qeury
更新時的預期結果:
| ID | 姓名 | 日期 | 訂單 | 店鋪編號 | 店名 |
|---|---|---|---|---|---|
| 1個 | 美國廣播公司 | 11/16/2022 | 10 | 1個 | jj |
uj5u.com熱心網友回復:
你可以試試UPDATE products ... RETURNING *。這可能會讓您獲得剛剛更新的行的內容。
至于UPDATE .... RETURNING someQuery,你不能那樣做?。您希望一次完成更新和 SELECT 操作。但這是不可能的。
如果您必須確保您的 SELECT 處理與您剛剛更新的資料完全相同的資料,您可以將您的兩個查詢包裝在一個BEGIN;/COMMIT;事務中。這可以防止并發用戶在您的 UPDATE 和 SELECT 之間進行更改。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535293.html
