IN-in-except에서 선택하십시오
-
23-12-2019 - |
문제
두 개의 관련 테이블이 있습니다. 테이블 중 하나는 사진에 대한 모든 항목이 들어 있으며 다른 하나는 각 사진 및 사용자 정보에 대한 모든 고양이 항목이 있습니다.
photos table:
id
photo (unique filename)
user
cats tables
photo
user
cat
.
사진 고양이
photo1.jpg 40000 A
photo2.jpg 40000 A
photo1.jpg 40000 B
photo1.jpg 40000 C
photo2.jpg 40000 P
photo3.jpg 40000 A
.
모든 사용자가 모든 사용자에 대해 더 많은 범주에 할당 할 수 있습니다
'a'또는 'b'cat에 포함되었을지라도 'p'고양이에 포함되지 않은 사용자 40000의 모든 사진을 선택하는 것입니다.
POTO2.JPG가 P 고양이에 포함되어 검색 결과에 나타나지 않아야합니다. 사용자 40000에 대한 나의 쿼리는 다음과 같은 결과를 제공해야합니다.
photo1
photo3
. 해결책
는 간단한 왼쪽 가입 / 널 테스트 여야합니다
select
p.id,
p.photo
from
photos p
left join cats c
on p.photo = c.photo
AND c.cat = 'P'
where
p.user = 40000
and c.photo is null
.
기본적으로 왼쪽 가입은 여전히 모든 사진이 자격을 갖추게됩니다.그러나 조인이 동일한 사진 및 카테고리= 'P'로 범주 테이블에 특별히 존재하면 "C.Photo"값이 있습니다.WHERE 절에서는 CAT 테이블에 NULL을 통해 NULL을 통해 NULL을 사용하는 것만 추가로 추가했습니다.
다른 팁
mysql> select * from photos
where photo not in (select photo from cats where cat='P')
and user = '40000';
. 제휴하지 않습니다 StackOverflow