tabla1 (id, nombre)
tabla2 (id, nombre)
Consulta:
SELECT name
FROM table2
-- that are not in table1 already
fuente
tabla1 (id, nombre)
tabla2 (id, nombre)
Consulta:
SELECT name
FROM table2
-- that are not in table1 already
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
P : ¿Qué está pasando aquí?
R : Conceptualmente, seleccionamos todas las filas de table1
y para cada fila intentamos encontrar una fila table2
con el mismo valor para la name
columna. Si no existe esa fila, solo dejamos la table2
parte de nuestro resultado vacía para esa fila. Luego, restringimos nuestra selección seleccionando solo aquellas filas en el resultado donde la fila coincidente no existe. Finalmente, ignoramos todos los campos de nuestro resultado, excepto la name
columna (la que estamos seguros de que existe table1
).
Si bien puede no ser el método más eficaz posible en todos los casos, debería funcionar básicamente en todos los motores de bases de datos que intentan implementar ANSI 92 SQL
Puedes hacer
o
Vea esta pregunta para 3 técnicas para lograr esto
fuente
No tengo suficientes puntos de representante para votar la segunda respuesta. Pero tengo que estar en desacuerdo con los comentarios en la respuesta superior. La segunda respuesta:
Es MUCHO más eficiente en la práctica. No sé por qué, pero lo estoy ejecutando con más de 800k de registros y la diferencia es tremenda con la ventaja dada a la segunda respuesta publicada anteriormente. Solo mis $ 0.02
fuente
Esta es la teoría de conjuntos pura que puede lograr con la
minus
operación.fuente
https://www.cloudways.com/blog/how-to-join-two-tables-mysql/
fuente
Cuidado con las trampas. Si el campo
Name
deTable1
contener valores nulos usted está en para sorpresas. Mejor es:fuente
Esto es lo que funcionó mejor para mí.
Esto fue más del doble de rápido que cualquier otro método que probé.
fuente
Puedes usarlo
EXCEPT
en mssql oMINUS
en oracle, son idénticos según:http://blog.sqlauthority.com/2008/08/07/sql-server-except-clause-in-sql-server-is-similar-to-minus-clause-in-oracle/
fuente
Ese trabajo fuerte para mi
fuente
Ver consulta:
Conceptualmente sería: Obtener los registros coincidentes en la subconsulta y luego en la consulta principal recuperar los registros que no están en la subconsulta.
fuente
Voy a volver a publicar (ya que todavía no soy lo suficientemente bueno como para comentar) en la respuesta correcta ... en caso de que alguien más pensara que necesitaba una mejor explicación.
Y he visto la sintaxis en FROM que necesita comas entre los nombres de las tablas en mySQL pero en sqlLite parecía preferir el espacio.
La conclusión es que cuando usas nombres de variables incorrectos, deja preguntas. Mis variables deberían tener más sentido. Y alguien debería explicar por qué necesitamos una coma o ninguna coma.
fuente
Si quieres seleccionar en usuario específico
La
tent_npk
es una clave principal de un usuariofuente