[英]How to Convert a SQL Query using Common Table Expressions to One Without (for SQL Server 2000)
我刚刚找到了一个适当的解决方案, 如何找到所有列中按键重复但不重复的行? 编码存储过程,然后了解到数据库卡在SQL Server 2000上。
当然,我的解决方案很大程度上依赖于公用表表达式。
任何人都可以为我提供一套转换回SQL Server 2000方言的文件吗?
请注意,我有像这样的东西:
;
WITH CTE1 AS ( ... ),
CTE2 AS (SELECT ... FROM CTE1 ... ),
CTE3 AS (SELECT ... FROM CTE1 INNER JOIN CTE2 ...)
SELECT * FROM CTE3
WHERE criteria
ORDER BY sequence
这似乎会让事情变得更有趣......
更新:没有CTE是递归的。
两个选项(授予,两者都不漂亮 - 这就是我们喜欢CTE的原因)
选项1
创建临时表( #
,或者足够小@
)并像CTE一样引用它。 完成后放弃。
选项2将整个CTE SELECT
作为表放在查询的FROM
部分中。
SELECT *
FROM (SELECT *
FROM table1) oldCTE
我不认为有可能提出容易将任何 cte转换为非cte语句的规则。 因为可能性太开放(特别是如果你正在使用递归CTE)。 我能想到的最接近的是将每个CTE按顺序排除,将其分解为自己的查询,并使用它来填充以下查询使用的临时表。 几乎没有效率,也没有在所有可能的情况下工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.