2010-04-08 40 views
1

如何從table_1查詢哪些ID在table_2上具有重複ID的ID不可用。見下面的例子。MySQL從具有重複ID /數據的另一個表中獲取數據

我想從表2

Table 1 
------------- 
| ID | Name | 
| 1 | a | 
| 2 | b | 
| 3 | c | 
| 4 | d | 
| 5 | e | 
| 6 | f | 
------------- 

Table 2 
------------- 
Table 1 ID | 
| 1   | 
| 1   | 
| 2   | 
| 2   | 
| 2   | 
| 3   | 
| 4   | 
------------- 

由於獲得ID 5和表1中6!

回答

2

減查詢將是非常有益的,看到這個鏈接:minus query replacement 爲您的數據,這將是這樣的:

SELECT table_1.id FROM table_1 LEFT JOIN table_2 ON table_2.id = table_1.id WHERE table_2.id IS NULL 
2

用途:

SELECT t.id 
    FROM TABLE_1 t1 
LEFT JOIN TABLE_2 t2 ON t2.id = t1.id 
    WHERE t2.id IS NULL 

使用NOT EXISTS:

SELECT t.id 
    FROM TABLE_1 t1 
    WHERE NOT EXISTS(SELECT NULL 
         FROM TABLE_2 t2 
         WHERE t2.id = t1.id) 

使用NOT IN:

SELECT t.id 
    FROM TABLE_1 t1 
    WHERE t1.id NOT IN (SELECT t2.id 
          FROM TABLE_2 t2) 

因爲不應該有表2中的ID列NULL值,左JOIN/IS NULL是最快的方式:http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/

0

如果我正確理解你,你想做一個外部連接。在這種情況下,這將是:

SELECT * FROM 
table_1 LEFT JOIN ON table_2 
ON table_1.id = table_2.id 
WHERE table_2.id is NULL 
0

這一個你想要做什麼:

Select t1.id 
From table1 t1 
Left Join table2 t2 
On t2.id = t1.id 
Where t2.id Is Null 

結果:

id 
-- 
5 
6 
相關問題