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