Program Club

여러 열에서 NOT 선택

proclub 2020. 12. 4. 21:07
반응형

여러 열에서 NOT 선택


다음 쿼리를 구현해야합니다.

SELECT * 
FROM   friend 
WHERE  ( friend.id1, friend.id2 ) 
         NOT IN (SELECT id1, 
                        id2 
                 FROM   likes) 

그러나 NOT IN은 여러 열에 구현 될 수 없습니다. 이 쿼리를 어떻게 작성합니까?


다음에 대해 생각하는지 잘 모르겠습니다.

select * from friend f
where not exists (
    select 1 from likes l where f.id1 = l.id and f.id2 = l.id2
)

id1이 id1과 id2와 id2와 관련된 경우에만 작동합니다.


신비하게 알려지지 않은 또 다른 RDBMS. 귀하의 구문은 PostgreSQL에서 완벽하게 괜찮습니다. 다른 쿼리 스타일 (특히 NOT EXISTS변형 또는 a LEFT JOIN)이 더 빠르게 수행 될 수 있지만 쿼리는 완벽하게 합법적입니다.

NOT IN그러나 어떤 NULL값을 포함 할 때 의 함정에 유의하십시오 .

LEFT JOIN이있는 변형 :

SELECT *
FROM   friend f
LEFT   JOIN likes l USING (id1, id2)
WHERE  l.id1 IS NULL;

NOT EXISTS변형에 대한 @ Michał의 답변을 참조하십시오 .
네 가지 기본 변형에 대한 자세한 평가 :


아마도 NOT EXISTS여러 열에 사용해야 합니다.

참고 URL : https://stackoverflow.com/questions/8033604/select-not-in-multiple-columns

반응형