Creo que voy por el camino correcto con este ... Por favor, tengan paciencia conmigo ya que mi SQL no es el mejor
Estoy tratando de consultar una base de datos para seleccionar todo de una tabla donde ciertas celdas no existen en otra. Eso no tiene mucho sentido, pero espero que este fragmento de código
SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Básicamente, tengo una tabla con una lista de empleados y sus detalles. Luego otra tabla con algunos otros detalles, incluido su nombre. Donde no hay nombre en la tabla eotm_dyn, lo que significa que no hay una entrada para ellos, me gustaría ver exactamente quiénes son, o en otras palabras, ver qué falta exactamente.
La consulta anterior no devuelve nada, pero sé que faltan 20 nombres, así que obviamente no lo he hecho bien.
¿Alguien puede ayudar?
group by X having exist [row with employeeID = e.id]
O
O
fuente
NOT IN
no funciona como se esperaba siname
tienenull
valores. Mire desde 36min 20seg en el video SESIÓN: 10 técnicas de ajuste de consultas que todo programador de SQL debe conocer (Kevin Kline, Aaron Bertrand) .Puede hacer una LEFT JOIN y afirmar que la columna unida es NULL.
Ejemplo:
fuente
Nunca devuelve ningún registro a menos que
eotm_dyn
esté vacío. Necesitas algún tipo de criterio sobreSELECT name FROM eotm_dyn
comoasumiendo que las dos tablas están vinculadas por una relación de clave externa. En este punto, puede usar una variedad de otras opciones, incluida una LEFT JOIN. Sin embargo, el optimizador normalmente los manejará de la misma manera en la mayoría de los casos.
fuente
También puede echar un vistazo a esta pregunta relacionada . Ese usuario informó que usar una combinación proporciona un mejor rendimiento que usar una subconsulta.
fuente