Tenga en cuenta que EXISTS es SQL estándar y no es una sintaxis exclusiva de MySQL …
EXISTS se evalúa como VERDADERO si su subconsulta devuelve algún resultado, FALSO de lo contrario. Como no le “importan” los resultados reales, es mejor por razones de rendimiento utilizar una lista SELECT “no-op” si es posible, como “SELECT 1 FROM WHERE ” en la subconsulta EXISTS , ya que todo lo que realmente “importa” son las cláusulas WHERE / HAVING de la subconsulta.
Mi uso favorito de EXISTS es para NO-existencia, ya que de lo contrario es muy difícil tener una consulta de negación bien planificada en MySQL.
- ¿Cuál es el mejor navegador para desarrolladores?
- ¿Existe algo como la pila completa incrustada?
- ¿Por qué debería elegir Java (especialmente Spring Framework) para el desarrollo web?
- ¿Cuál es una buena manera de 'conectar' los controles de IU generados por JavaScript entre sí y definir sus interacciones?
- ¿Podemos desarrollar un sitio web sin programación?
Por ejemplo, encuentre todas las recs en la tabla1 que no tienen una propiedad en la tabla2 …
seleccione * de la tabla1 donde no existe (seleccione 1 de la tabla2 donde table2.property = table1.property);
Lo bueno de este enfoque es que es una consulta “positiva”, por lo que se puede usar un índice en table2.property. En MySQL, también es mucho más rápido que usar IN o NOT IN.
EXISTE puede parecer esotérico, pero es muy útil