2016-12-17 16 views
2

次のSQLでは、RETURNING句を他のものに結合させて、結合された行を返すことができますか?ここでは、更新されたmytableの行のみが返されますが、その行を戻して別の表の何かに結合したいと思います。結合によるPostgres RETURNING句

UPDATE mytable 
SET status = 'A' 
FROM (
    SELECT myid 
    FROM mytable 
    WHERE status = 'B' 
    ORDER BY mycolumn 
    LIMIT 100 
    FOR UPDATE 
    ) sub 
WHERE mytable.myid = sub.myid 
RETURNING *; 

私は私のクライアントアプリケーションから別のクエリを行うことができますが、私は、DBへの個別の往復を作るために持っ内のPostgresの中からそれを行う方法がありますかどうかを知りたいのです。

+0

行サブにおいてMYTABLEにある一つの列からなります。書かれているように、問題は過度に単純化されている。 –

答えて

2

FROM句に何がRETURNINGための公正なゲームである:

UPDATE mytable 
SET status = 'A' 
FROM 
    (
    SELECT 
     myid 
    FROM mytable 
    WHERE status = 'B' 
    ORDER BY mycolumn 
    LIMIT 100 
    FOR UPDATE 
) sub 
    JOIN jointable j ON j.id = sub.myid 
WHERE mytable.myid = sub.myid 
RETURNING mytable.mycolumn, j.othercolumn 
;  
+0

私の質問をご覧くださいhttp://stackoverflow.com/questions/41387603/postgres-returning-clause-with-join-and-order?それは外側の 'RETURNING'クエリの' ORDER BY mycolumn'に従うことができないという点を除いて、あなたがここに挙げたものと同じです。ありがとう! – user779159