MySQL присоединиться и исключить? - PullRequest
8 голосов
/ 13 марта 2011

У меня есть две таблицы, таблица A, одна с двумя столбцами: IP и ID, и таблица B с столбцами: ID и дополнительная информация.Я хочу извлечь строки в таблице B для IP-адресов, которых нет в таблице A. Поэтому, если у меня есть строки в таблице A с

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

и у меня есть строки в таблице B

id = 1
id = 2

тогда, учитывая ip = 111.111.11, как я могу вернуть строку 1 в таблице B?

Ответы [ 2 ]

28 голосов
/ 13 марта 2011
select b.id, b.* 
from b
left join a on a.id = b.id
where a.id is null

При этом будут извлечены все строки в B, у которых нет совпадающих строк в A. Вы можете добавить конкретный IP-адрес в предложение where, если хотите попробовать только этот один ip.

8 голосов
/ 13 марта 2011
SELECT * FROM `B` WHERE `ID` NOT IN (SELECT `ID` FROM `A`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...