MySQL voor versie 8.0 ondersteunt de WITH-clausule niet (CTE in SQL Server-taal; Subquery Factoring in Oracle), dus u blijft achter met:
- TIJDELIJKE tabellen
- AFGETROKKEN tabellen
- inline weergaven (in feite wat de WITH-clausule vertegenwoordigt - ze zijn uitwisselbaar)
Het verzoek om de functie dateert uit 2006.
Zoals vermeld, heb je een slecht voorbeeld gegeven - het is niet nodig om een subselectie uit te voeren als je de uitvoer van de kolommen op geen enkele manier verandert:
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
Hier is een beter voorbeeld:
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