sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo se usa la cláusula WITH en MySQL?

MySQL anterior a la versión 8.0 no admite la cláusula WITH (CTE en el lenguaje de SQL Server; factorización de subconsultas en Oracle), por lo que le queda usar:

  • Mesas TEMPORALES
  • tablas DERIVADAS
  • vistas en línea (efectivamente lo que representa la cláusula WITH - son intercambiables)

La solicitud de la función se remonta a 2006.

Como se mencionó, proporcionó un mal ejemplo:no es necesario realizar una subselección si no está alterando la salida de las columnas de ninguna manera:

  SELECT * 
    FROM ARTICLE t
    JOIN USERINFO ui ON ui.user_userid = t.article_ownerid
    JOIN CATEGORY c ON c.catid =  t.article_categoryid
   WHERE t.published_ind = 0
ORDER BY t.article_date DESC 
   LIMIT 1, 3

Aquí hay un mejor ejemplo:

SELECT t.name,
       t.num
  FROM TABLE t
  JOIN (SELECT c.id
               COUNT(*) 'num'
          FROM TABLE c
         WHERE c.column = 'a'
      GROUP BY c.id) ta ON ta.id = t.id