一尘不染

SQL-使用CTE对另一个CTE的引用

sql

在SQL中是否可以在同一查询的另一个CTE内的Common Table Expression内使用引用?这里有一个例子:

WITH CT1 AS (SELECT * FROM T),
     CT2 AS (SELECT * FROM CT1)

SELECT * FROM CT2;

我在SQLite3中尝试了此方法,并且它起作用了,我只是想知道它是否是标准SQL的一部分。关于此论点的任何建议将不胜感激。非常感谢你!


阅读 169

收藏
2021-03-10

共1个答案

一尘不染

这是CTE的三个重要属性:

  • 您可以在后续的CTE中或查询的主体中引用CTE。

  • 您可以多次引用任何给定的CTE。

  • CTE可以from在其他子查询中任何嵌套级别的子句中使用。

与使用SQL中的所有内容一样,需要定义CTE,然后再使用它们。因此,您不能以随机顺序定义它们。

这是CTE的标准定义,并且很好地解释了如何在数据库中使用它们。这三个属性是它们与子查询不同的关键方式。

2021-03-10