2015-06-30 66 views
0

我有2個表。這兩個表之間存在約束。選擇零子元素的行(加入)

Table1 : Table2 = 1 : n

我想選擇哪個GOT在Table2沒有條目Table1元素的鍵。

例子:

| Table 1   | 
|Key |Col1 |Col2 |...| 
|0001|.... |.... |...| 
|0002|.... |.... |...| 
|0003|.... |.... |...| 
|0004|.... |.... |...| 

| Table 2   | 
|Tab1|Col1 |Col2 |...| 
|0001|.... |.... |...| 
|0001|.... |.... |...| 
|0003|.... |.... |...| 
|0002|.... |.... |...| 

Desired output: 
0004 

輸出是得到了在table2無子項的table1的唯一入口。

我已經試過像許多不同的選擇:

SELECT 
    Key 
    FROM Table1 
    WHERE 
     (SELECT COUNT(*) FROM Table2 
      WHERE Table1~Key = Table2~Tab1 
      GROUP BY Table2~Tab1) 

SELECT COUNT(Table2) 
    Key 
    FROM Table1 
    INNER JOIN Table2 
     ON Table1~Key = Table2~Tab1. 

... 

但他們沒有工作。 有沒有人得到一個工作查詢ABAP

回答

2
select * from table1 where key not in (select tab1 from table2) 
+0

非常感謝。只是另一個小問題,是否會對性能產生負面影響? –

+0

好..相比,我猜。如果您得到多個工作查詢,請檢查執行計劃以查看差異 – Randy

2

嘗試此查詢

select key from table1 where not EXISTS (SELECT * 
       FROM table2 
       WHERE table1.key=table2.tab1); 
1

嘗試以下,

SELECT Key FROM Table1 
WHERE key not in (SELECT distinct tab1 FROM Table2) 
0

解決方案,無需再選擇:

SELECT t1~Key FROM Table1 as t1 
LEFT JOIN Table2 as t2 
WHERE t2~Key is null