您如何在MySQL中使用“ WITH”子句?

我正在将所有SQL Server查询都转换为MySQL,并且WITH其中所有查询都失败了。这是一个例子:

WITH t1 AS

(

SELECT article.*, userinfo.*, category.*

FROM question

INNER JOIN userinfo ON userinfo.user_userid = article.article_ownerid

INNER JOIN category ON article.article_categoryid = category.catid

WHERE article.article_isdeleted = 0

)

SELECT t1.*

FROM t1

ORDER BY t1.article_date DESC

LIMIT 1, 3

回答:

(在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 = 0

ORDER 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

以上是 您如何在MySQL中使用“ WITH”子句? 的全部内容, 来源链接: utcz.com/qa/413015.html

回到顶部