[英]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.