SubQueries vs INNER JOINs
Es muy conocido que en el proceso de trabajo con subconsultas, necesariamente manejaremos dos tipos de consultas: consultas internas y consultas externas. Las consultas internas no es más que las subconsultas propiamente dichas y la consultas externa es aquella que hace uso de los resultados devueltos por la consulta interna o subconsulta. En todo este rollo, también se harán uso del predicado IN.
Ejemplo: la consulta externa usa el predicado IN para operar con los valores devueltos por la subconsulta.

Por otra parte, cuando se presenta una subconsulta con la palabra clave EXISTS, funciona como una prueba de existencia. La cláusula WHERE de la consulta externa comprueba la existencia de las filas devueltas por la subconsulta. La subconsulta en realidad no produce ningún dato, devuelve el valor TRUE o FALSE.

En muchos casos puede usarse una operación de combinación en lugar de una consulta, no obstante algunas instancias pueden procesarse solo con una subconsulta. En algunos casos una operación de combinación puede producir un mejor rendimiento que una subconsulta, pero por lo general se observa muy poca diferencia en el rendimiento. Sin embargo, el uso de grandes anidamientos de subconsultas puede afectar seriamente el rendimiento. De manera general la utilización de combinaciones producirá los mejores resultados. Veámos un ejemplo:
Haciendo uso de una subconsulta podríamos realizar la siguiente consulta:

Formulando la anterior subconsulta como una combinación.

Haciendo uso de una subconsulta podríamos realizar la siguiente consulta:

Formulando la anterior subconsulta como una combinación.

Haciendo uso de una subconsulta podríamos realizar la siguiente consulta:

Formulando la anterior subconsulta como una combinación.

La subconsulta siempre está encerrada entre paréntesis y a menos que se vaya a ejecutar una subconsulta correlacionada termina antes de que se procese la consulta externa. Una subconsulta puede contener otra subconsulta, y esta subconsulta puede, a su vez, contener otra subconsulta, ... y así sucesivamente. Los recursos del sistema(como la memoria disponible) limitan el número de subconsultas que pueden procesarce. Se puede anidar subconsultas hasta 32 niveles, pero esto como le mencioné, depende de los recursos disponibles del sistema. Ejemplo:

Formulando la anterior subconsulta como una combinación:

Una subconsulta no está limitado para sentencias SELECT, tambíen se puede usar con instrucciones DELETE, UPDATE, INSERT.
INSERT

UPDATE

DELETE

Un subquery puede usarse de muchas maneras más, es bastante flexible, debes tener a la mano muchos criterios para saber cuando usarlo. Este artículo te ayudará a entender todo esto: ¿Cómo y cuándo usar subconsultas?
Otras formas de usar un subquery se explican en los siguientes artículos que os recomiendo leerlos:
Todo esto fue por esta vez, espero haber contribuido a aclarar este tema.
Saludos
.