두 개의 테이블, 사람 및 차량이 있습니다. 차량은 사람들에게 속합니다. 사람이 차량을 가지고 있지 않은지 확인하려하고있다. 나는 사람과 차량에 가입하고 Vehicles.person_id에없는 사람 ID를 표시하여이 작업을 시도했습니다."NOT IN"Postgres를 사용하는 올바른 방법
이것은 아무 것도 반환하지 않으며 내가 잘못한 것이 있는지 또는이 작업을보다 효율적으로 수행 할 수 있는지 궁금합니다. (Select id From People WHERE id NOT IN
에 의해)에없는 모든 사람 SELECT distinct person_id FROM Vehicles
에 의해 차량을 가지고 모든 사람의 목록을 선택
Select id
From People
WHERE id NOT IN (SELECT distinct person_id
FROM Vehicles
WHERE person_id IS NOT NULL)
:
쿼리는 다음과
Select People.id From People INNER JOIN Vehicles on People.id=Vehicles.person_id where People.id NOT IN Vehicles.person_id;
하나의 사람이 많은 차량을 소유 할 수 있다면'DISTINCT 선택 '을 원할 수 있습니다. –
@BaconBits, 입력을 주셔서 감사합니다 – radar
이것은'where not in'보다 훨씬 빠르게 실행됩니다. – Jasen