MySQL vor Version 8.0 unterstützt die WITH-Klausel nicht (CTE im SQL Server-Jargon; Subquery Factoring in Oracle), also bleibt Ihnen die Verwendung von:
- TEMPORÄRE Tabellen
- ABGELEGTE Tabellen
- Inline-Ansichten (eigentlich das, was die WITH-Klausel darstellt - sie sind austauschbar)
Die Anfrage für die Funktion stammt aus dem Jahr 2006.
Wie bereits erwähnt, haben Sie ein schlechtes Beispiel geliefert - es besteht keine Notwendigkeit, eine Unterauswahl durchzuführen, wenn Sie die Ausgabe der Spalten in keiner Weise ändern:
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 ist ein besseres Beispiel:
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