2016-12-17 2 views
2

다음 SQL에서 RETURNING 절을 다른 항목에 조인시키고 조인 된 행을 반환하려면 어떻게해야합니까? 여기에서는 업데이트 된 행 mytable을 반환하지만 행을 반환하여 다른 테이블의 항목에 조인하고 싶습니다.join과 함께 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에 별도의 왕복을하는 데 내 포스트 그레스 내에서 할 수있는 방법이 있는지 알고 싶습니다. FROM

+0

행은 MYTABLE에 하나의 열로 구성된다. 서면으로, 질문은 지나치게 단순화됩니다. –

답변

2

뭐든지 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? 그것은 당신이 여기에 열거 한 것과 같은 SQL 문장에 관한 것입니다, 외측의'RETURNING' 질의에서'ORDER BY mycolumn'을 따르도록 할 수 없다는 점만 빼고요. 감사! – user779159