版本8.0之前的MySQL不支持WITH子句(SQL Server术语中的CTE;Oracle中的子查询分解),因此您需要使用:临时表
导出表
内联视图(实际上WITH子句代表什么-它们是可互换的)
对该功能的请求可追溯到2006年。
如前所述,您提供了一个糟糕的示例-如果不以任何方式更改列的输出,就不需要执行子选择: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 = 0ORDER BY t.article_date DESC
LIMIT 1, 3
下面是一个更好的例子: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