MySQL före version 8.0 stöder inte WITH-klausulen (CTE på SQL Server-språk; Subquery Factoring i Oracle), så du har kvar att använda:
- TILLfälliga tabeller
- DERIVADE tabeller
- inline-vyer (i praktiken vad WITH-satsen representerar - de är utbytbara)
Begäran om funktionen går tillbaka till 2006.
Som nämnts gav du ett dåligt exempel - det finns inget behov av att göra ett underval om du inte ändrar utdata från kolumnerna på något sätt:
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
Här är ett bättre exempel:
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