在SQL中是否可以在同一查询中的另一个C.T.E内的公用表表达式中使用引用?这里有一个例子:
WITH CT1 AS (SELECT * FROM T),
CT2 AS (SELECT * FROM CT1)
SELECT * FROM CT2;
我在SQLite3中试过这个并且它有效,我只是想知道它是否是标准SQL的一部分。任何有关此论点的建议都将受到高度赞赏。非常感谢你!
答案 0 :(得分:9)
以下是CTE的三个重要特性:
您可以在后续CTE或查询主体中引用CTE。
您可以多次参考任何给定的CTE。
CTE可以在其他子查询中任何嵌套级别的from
子句中使用。
CTE - 与SQL中的所有内容一样 - 需要在使用之前进行定义。因此,您无法以随机顺序定义它们。
这是CTE的标准定义,并且很好地解释了它们如何在数据库中使用。这三个属性是它们与子查询不同的关键方式。