MySQL før version 8.0 understøtter ikke WITH-klausulen (CTE i SQL Server-sprog; Subquery Factoring i Oracle), så du står tilbage med at bruge:
- MIDDELIGE tabeller
- AFLEDTE tabeller
- indbyggede visninger (faktisk hvad WITH-sætningen repræsenterer - de kan udskiftes)
Anmodningen om funktionen går tilbage til 2006.
Som nævnt gav du et dårligt eksempel - der er ingen grund til at udføre et undervalg, hvis du ikke ændrer outputtet af kolonnerne på nogen måde:
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
Her er et bedre eksempel:
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