Oracle SQL에서 상관 하위 쿼리의 NOT EXISTS 조건을 기반으로 쉽게 업데이트 할 수 있습니다. 이 기능은 다른 쿼리 나 ID 목록을 기반으로하는 업데이트에 유용합니다.Postgres : NOT EXISTS가있는 상관 하위 쿼리
서브 쿼리의 메커니즘은 Postgres에서 다릅니다 ... 어떻게 동일한 목표를 달성 할 수 있습니까? http://sqlfiddle.com/#!1/1dbb8/55
는 오라클에 그것을 할 것입니다 방법
UPDATE UserInfo a
SET a.username = 'not found'
WHERE NOT EXISTS (SELECT 'X'
FROM UserOrder b
WHERE b.userid = a.userid)
AND a.userid in (1,2,3);
포스트 그레스는 NOT 쿼리를 EXISTS :이
SELECT u.userid, u.username
FROM UserInfo AS u
WHERE NOT EXISTS
(SELECT *
FROM UserOrder AS o
WHERE o.userid = u.userid
);
포스트 그레스는 NOT 갱신 EXISTS 작동합니다 작동하지 않습니다
UPDATE UserInfo
SET username = 'not found'
FROM (SELECT u.userid
FROM UserInfo AS u
WHERE NOT EXISTS
(SELECT *
FROM UserOrder AS o
WHERE o.userid = u.userid
)) em
WHERE em.userid = UserInfo.userid;
왼쪽 안티 - 조인의 왼쪽을 업데이트 하시겠습니까? Pg에서는이 작업을 수행 할 수 있지만 불행하게도 왼쪽에 자체 조인이 필요합니다 (예 : 't1을 왼쪽 외부 조인 ... on ... ... t.id = t1.id'로 업데이트합니다. 왜냐하면 내부 조인 (impicit, update를 통해 ... from')를 업데이트 대상 테이블에 대해 적용합니다. –
주어진 솔루션이 작동합니다. 이 [업데이트 된 바이올린] (http://sqlfiddle.com/#!1/1dbb8/75)을 고려하십시오. –