나는 이것이 무엇이라고 불리는 지 잘 모르겠다. 그러나 그것에 대해 생각해 보았고 어떻게 접근해야할지 모르겠다. 정말 간단하다고 확신합니다.SQL Join with 'Unless'절
두 개의 테이블 foo와 bar가 있습니다. 그들은 다음과 같이 관련있어 :
푸 테이블 :
| id | name
--------------
| 1 | blah
| 2 | blarg
| 3 | blag
바 표 (바즈의 의미는 무관하다) : 푸 당
| fooId | baz |
---------------
| 1 | 100 |
| 1 | 94 |
| 1 | 27 |
| 2 | 94 |
| 3 | 19 |
그래서, 여러 바. 위의 경우 id가 2 인 Foo를 선택하기 만합니다.
나는 시도했는데, 그들은 바즈가 94인데, 을 가지고 싶습니다.도 바스가 100이 아닙니다.
SELECT id FROM foo
LEFT JOIN bar
ON foo.id = bar.fooId
WHERE bar.baz = 94
AND bar.baz != 100
그러나 분명히 지금까지 나를 잡았습니다. 아마도 여기에 group by 절이있을 것이라고 확신하지만, 그것이 무엇인지 분명히 모르겠습니다.
미리 감사드립니다.
EDIT :이 문제가있는 사람은 @iu이며,이 용어는 anti-join입니다.
오라클의 최적화/NULL 목록만큼 의미 동일 IS NOT IN, NOT이 있는지 확인하고 LEFT가 가입 할 수있다 값은 NOT NULL로 선언됩니다. http://explainextended.com/2009/09/17/not-in-vs-not-exists-vs-left-join-is-null-oracle/ –