2010-04-08 123 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 
相关问题