2017-12-09 2 views
0

두 테이블에서 고유 값을 가져와야하지만 두 번째 테이블에서 값을 제외해야합니다. 테이블 AK로에2 개 중 1 개 테이블에서 값을 제외한 고유 값을 구하는 방법

 
Table Gr:   Table Ak: 
Idgr | TextGr  Idak | Grid | TextAk 
1 | Aa   1 | 11 | R 
11 | Bb   2 | 14 | P 
12 | Cc   3 | 16 | P 
13 | Dd   4 | 13 | P 
14 | Ee   
15 | Ff   
16 | Gg   
17 | Hh   
18 | Ii   

Grid가에서 같은 ID입니다 : 내가 두 번째 테이블에서 하지을하고있는 이상 9 테이블의 모양 첫 번째 테이블의 모든 값을 필요 의미 테이블 Gr에 Idgr
내가 얻을 같은 결과가 필요합니다 내가 LEFT OUTER와 노력

 
Results: 
Idgr | TextGr 
12 | Cc 
15 | Ff 
17 | Hh 
18 | Ii 

가입,하지만 테이블 할머니 거의 모든 값을 얻는다. 체크 아웃 SQLfiddle demo

답변

1

on에서 동등성을 테스트하고 일치하지 않는 것을 얻으려면 where을 사용하고 싶습니다. 그래서, 당신이 원하는 것 :

select Idgr, TextGr 
from Gr left outer join 
    Ak 
    on gr.idgr = ak.gid 
where gr.idgr > 9 and ak.Idak is null; 

Here은 SQL Fiddle입니다.

0

당신은 EXCEPT 키워드를 찾고 있습니다.

(SELECT Idgr AS Idgr FROM Gr WHERE Idgr > 9) 
EXCEPT 
(SELECT Grid AS Idgr FROM Ak); 

이것은 Gr의 모든 값 목록을 제공 한 다음 Ak에서 일치하는 값을 뺍니다. Mariadb에서는 MINUS라고하는 다른 SQL 변형에서 EXCEPT라고 불립니다.