2011-03-13 71 views
6

我有兩張桌子,一張有兩列的桌子:IP和ID,桌子B有列:ID和額外信息。我想提取表B中的行,不在表A的IP所以,如果我有表A中的行與MySQL的加入和排除?

id = 1 
ip = 000.000.00 
id = 2 
ip = 111.111.11 

和我行表B中

id = 1 
id = 2 

然後,如果ip = 111.111.11,我怎樣才能返回表B中的第1行?

+0

將您接受的答案更改爲Marc的答案。 – Pacerier 2015-04-10 13:46:35

回答

8
SELECT * FROM `B` WHERE `ID` NOT IN (SELECT `ID` FROM `A`) 
21
select b.id, b.* 
from b 
left join a on a.id = b.id 
where a.id is null 

這將會把所有在B中有A.沒有匹配行的行您可以添加特定的IP到WHERE子句,如果你想嘗試只是一個IP地址。

+0

爲什麼b.id和b。*在同一時間 - 太有野心 – bensiu 2011-03-13 03:46:45

+2

因爲OP表示表中還有其他字段,但沒有指定它們。所以我特別選擇了他在問題中包含的領域,並且在'*'中加入了他並不是 – 2011-03-13 03:47:37

+1

這樣顯而易見的領域,然而我卻無法自己想出這個領域,謝謝噸! – 2013-07-05 12:46:09