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)