En versiones prévias de MySQL (anteriores a la MySQL 4.1),
          sólo se soportaban consultas anidadas de la forma
          INSERT ... SELECT ... y REPLACE
          ... SELECT .... Este no es el caso en MySQL 5.0,
          pero es cierto que hay a veces otras formas de testear la
          pertenencia a un grupo de valores. También es cierto que en
          algunas ocasiones, no es sólo posible reescribir una consulta
          sin una subconsulta, sino que puede ser más eficiente hacerlo
          que usar subconsultas. Una de las técnicas disponibles es
          usar el constructor IN() :
        
Por ejemplo, esta consulta:
SELECT * FROM t1 WHERE id IN (SELECT id FROM t2);
Puede reescribirse como:
SELECT DISTINCT t1.* FROM t1, t2 WHERE t1.id=t2.id;
Las consultas:
SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2); SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE t1.id=t2.id);
          Pueden reescribirse usando IN():
        
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;
          Un LEFT [OUTER] JOIN puede ser más rápido
          que la subconsulta equivalente ya que el servidor puede ser
          capaz de optimizarlo mejor — este es un hecho no
          específico de MySQL Server . Antes de SQL-92, los outer joins
          no existían, así que las subconsultas eran el único modo de
          hacer ciertas cosas. Hoy, MySQL Server y otros sistemas de
          bases de datos ofrecen un ámplio rango de tipos de outer
          join.
        
          MySQL Server soporta comandos DELETE para
          múltiples tablas que pueden usarse para borrar registros
          basándose en la información de una tabla o de varias al
          mismo tiempo. Los comandos UPDATE para
          múltiples tablas también se soportan en MySQL 5.0.
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

