2011-03-13 13 views
6

Tengo dos tablas, la tabla A una con dos columnas: IP e ID, y la tabla B con columnas: ID e información adicional. Quiero extraer las filas de la tabla B para las direcciones IP que no están en la tabla A. Así que si tengo unas filas de la tabla A conMySQL unirse y excluir?

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

y tengo filas de la tabla B

id = 1 
id = 2 

entonces , dado ip = 111.111.11, ¿cómo puedo devolver la fila 1 en la tabla B?

+0

Cambie su respuesta aceptada a la respuesta de Marc. – Pacerier

Respuesta

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 

Esto va a tirar todas las filas de B que no tienen filas coincidentes en A. Puede agregar una dirección IP específica en la cláusula en la que si quieres probar sólo para ese IP.

+0

por qué b.id y b. * En este mismo momento - demasiado ambicioso – bensiu

+2

Porque OP dijo que hay otros campos en la tabla, pero no los especificó. Así que estoy seleccionando específicamente los campos que incluyó en la pregunta, y puse '' 'para cubrir los campos que él no hizo –

+1

tan obvio, y sin embargo de alguna manera no pude resolver esto por mi cuenta, gracias a ¡tonelada! –