2013-10-13 141 views
0

下面是我创建的表的复制品。我的目标是简单地从第二张桌子上找不到的第一张桌子上选择独特的id_num在mysql中选择唯一的标识

我曾尝试做下面的代码,但不知何故,我一直得到空结果

SELECT `first_table`.name FROM `first_table` 
INNER JOIN `second_table` 
ON `first_table`.id_num = `second_table`.id_num 
WHERE `first_table`.name = `second_table`.name 

第一个表:

id_num | name 
    301  | Bobby 
    123  | George 
    25  | Vicky 

二表:

id_num | name 
    301  | Bobby 
    435  | George 
    25  | Vicky 

我希望结果我正在寻找:

id_num | name 
435  | George 
+2

'id_num'在理想的结果应该是'123',而不是' 435'根据您的要求 – sarwar026

+0

你需要那个'WHERE'子句吗? – tommyd456

回答

3

LEFT JOIN应该在这里工作。也

SELECT `first_table`.name FROM `first_table` 
LEFT JOIN `second_table` 
ON `first_table`.id_num = `second_table`.id_num 
WHERE `second_table`.id_num is NULL 

见这个有用的信息图表

enter image description here

+0

恰好代表..............! –

+0

图像功劳去@kingkero btw ... – sarwar026

1

尝试这种使用NOT IN

select `id_num` , name from `table2` where name not in (
                SELECT t1.name FROM `table1` t1 
                INNER JOIN `table2` t2 
                ON t1.id_num = t2.id_num) 

DEMO HERE

+1

为什么你不应该使用这种构造... http://sqlfiddle.com/#!2/46934/17与索引示例http://sqlfiddle.com/ #!2/b773a/1结论LEFT JOIN会在大量记录中更好地缩放 –

+0

正确的......! –