이 쿼리는 내가 이해이 쿼리는
select fname, lname
from Owner
where not exists
(select fname, lname
from Trainer)
어떤 의미가 무엇을 의미합니까? 맞습니까?
이 쿼리는 내가 이해이 쿼리는
select fname, lname
from Owner
where not exists
(select fname, lname
from Trainer)
어떤 의미가 무엇을 의미합니까? 맞습니까?
Owner
테이블에는 있지만 Trainer
테이블에는없는 사람들의 이름을 찾으십시오.
trainer
테이블에 존재하지 않는 owner
테이블에서 모든 사람의 목록을 가져 오는 것은 매우 안타깝습니다.
----------------
fname | lname
----------------
clark | kent
lois | lane
업데이트
다음Owner
테이블
----------------
fname | lname
----------------
clark | kent
lois | lane
peter | parker
를 포함하고 트레이너 테이블
----------------
fname | lname
----------------
peter | parker
hal | jordan
가 포함되어있는 경우
그래서, 당신은 결과 세트를 얻어야한다
실제로 트레이너 테이블에 레코드가 있으면 쿼리에서 아무 것도 반환하지 않습니다. 아마도 다음을 사용해야합니다 :
select fname, lname
from Owners
where not exists (
select fname, lname
from trainers
where fname=Owners.fname
and lname=Owners.lname
)
쿼리는 '선택'과 '위치'의 두 부분으로 구성됩니다. 먼저 어디 부분에서 봐 :
where not exists
(select fname, lname from Trainer)
이 무언가가있는 경우가 트레이너 테이블에 아무것도없고,에 '거짓'경우 절은 '사실'로 평가됩니다. 이제 '선택'부분을 살펴보십시오.
select fname, lname from Owners
'소유자'테이블에서 모든 행을 선택합니다.
함께 넣기 : 쿼리는 소유자 테이블에서 모든 행을 선택하고 (있는 경우에만) 트레이너 테이블에 아무 것도 없습니다. 존재하는 경우에는 아무 것도 표시되지 않습니다.
아마도 의도 였지만 질의 작성자는 하위 선택을 최상위 선택 항목과 연결하지 않았습니다. 이 쿼리는'Trainer'가 비어 있으면'Owner'의 모든 행을 반환하고 그렇지 않으면 행을 반환하지 않습니다. – 9000
@ 9000 : 아주 잘 잡습니다. 나는 그것을 놓쳤다는 것을 믿을 수 없다. – AgentConundrum
하지만 쿼리를 실행할 때 두 테이블이 다르더라도 결과가 표시되지 않습니다. – Stive