0
A
回答
2
WITH
子句通常用於select查詢中,當您必須在包含複雜子句的子查詢(如HAVING
(儘管不一定))上執行某些連接時。一般來說WITH
子句只能用於SELECT
語句。
但是在數據必須被操縱的情況下,這意味着您想要在某些條件下更改數據,或者甚至想要根據複雜的條件再次刪除某些行,您寧願使用TEMP TABLE
。雖然大多數情況下可以通過WITH
來實現,但它通常需要花費一些複雜的邏輯,在TEMP
表中,您可以使用幾條不同的SQL語句來實現相同的目的。
此外,TEMP
表通常被用作一個臨時表,而不是SELECT
查詢即TEMP
表是用來當你想從S3
加載大量數據的視圖,您可能希望將數據加載到一個臨時表,分析數據,刪除冗餘,並最終一次將其合併到原始表中。
雖然TEMP
表只是當前會話的瞬態,但總是會重新評估WITH
。
0
主要區別在於臨時表是存儲的表。 CTE更類似於視圖,並且可以幫助您以更易於閱讀和更合乎邏輯的方式表達SQL。表和視圖之間也有相同的區別,因爲表格爲您提供了以高性能方式執行任務的潛力。
如果您正在構建一個非常複雜的查詢或需要分階段構建的查詢,那麼WITH子句/ CTE將幫助您執行此操作。但是,如果您希望將數據存儲在表中以提高性能,臨時表將是您的最佳選擇。 同樣,臨時表可以一次又一次地使用,所以如果你有多個查詢中使用的代碼相同,你可能會考慮臨時表而不是CTE。
相關問題
- 1. Mysql臨時表和oracle臨時表有什麼區別
- 2. WITH子句 - 臨時表創建
- 3. WITH Query和SELECT Query有什麼區別?
- 4. 內存表,臨時表和數據透視表有什麼區別?
- 5. document.write和return語句有什麼區別?
- 6. Clojure中with-redefs和with-redefs-fn有什麼區別?
- 7. 寄存器和臨時寄存器有什麼區別?
- 8. 信號量和臨界區域有什麼區別?
- 9. SQL臨時數據庫,臨時表和表之間的區別
- 10. 此WHERE子句和此加入之間有什麼區別?
- 11. Firebase - ref和孩子有什麼區別?
- 12. 帖子和頁面有什麼區別
- 13. 插座和襪子有什麼區別?
- 14. 叉子和線程有什麼區別?
- 15. 函子和「泛型」有什麼區別
- 16. Java中的表達式和語句有什麼區別?
- 17. Ruby中的語句和表達有什麼區別?
- 18. 思考時間和猴子說話時間有什麼區別
- 19. 有什麼區別`和$(Bash中有什麼區別?
- 20. ,和+連接時有什麼區別?
- 21. 列表中的:::和++有什麼區別?
- 22. SQL Server表:@,#和##有什麼區別?
- 23. ==和===有什麼區別?
- 24. ==和===有什麼區別?
- 25. 有什麼區別? :和||
- 26. ==和===有什麼區別?
- 27. '=='和'==='有什麼區別?
- 28. `&`和`ref`有什麼區別?
- 29. 有什麼區別:。!和:r!?
- 30. | 0和~~有什麼區別?
主要區別:必須直接在關聯的查詢中使用with子句。使用臨時表格,您可以在會話期間使用它們。所以,他們的壽命是不同的。 –