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子句。使用临时表格,您可以在会话期间使用它们。所以,他们的寿命是不同的。 –