not exist drop sql exists

drop - if table exists mysql



sql: verificar si la entrada en la tabla A existe en la tabla B (4)

La respuesta clásica que funciona en casi todos los entornos es

SELECT ID, Name, blah, blah FROM TableB TB LEFT JOIN TableA TA ON TB.ID=TA.ID WHERE TA.ID IS NULL

a veces NO EXISTE no se puede implementar (no funciona).

Tengo una tabla de definición que sé que no se está manteniendo muy bien, llamemos a esta table A Tengo otra tabla (llámala table B ) que es mucho más pequeña e idealmente debería ser un subset of table A pero sé que la table A está un tanto obsoleta y no contiene nuevas entradas que están en la Table B

Tenga en cuenta que las tablas A y B tienen columnas diferentes.

Table A: ID, Name, blah, blah, blah, blah Table B: ID, Name

Quiero todas las filas en la Tabla B de modo que la ID en la Tabla B NO exista en la Tabla A. Entonces, esto no coincide con una fila en la Tabla A, quiero solo filas en la Tabla B donde la ID NO existe en absoluto en la Tabla A.


O si no se implementan "NO EXISTE"

SELECT * FROM B WHERE (SELECT count(*) FROM A WHERE A.ID = B.ID) < 1


Si está configurado utilizando EXISTS, puede usar lo siguiente en SQL Server:

SELECT * FROM TableB as b WHERE NOT EXISTS ( SELECT * FROM TableA as a WHERE b.id = a.id )


SELECT * FROM B WHERE NOT EXISTS (SELECT 1 FROM A WHERE A.ID = B.ID)