通俗易懂地讲,WITH子句和临时表之间的关键区别是什么?
在哪种情况下使用其中一种比另一种更好?
通俗易懂地讲,WITH子句和临时表之间的关键区别是什么?
在哪种情况下使用其中一种比另一种更好?
WITH
子句通常在选择查询中使用,特别是当您需要对包含复杂子句(如HAVING
)的多个子查询执行某些连接时。一般来说,WITH
子句只能在SELECT
语句中使用。
但是,在需要操作数据的情况下,也就是说,您想根据某些复杂条件更改数据甚至想再次删除某些行,您可能更愿意使用TEMP TABLE
。虽然大多数情况都可以通过WITH
实现,但这通常需要一些复杂的逻辑,在TEMP
表中,您可以有几个不同的SQL语句来实现相同的效果。
此外,TEMP
表通常用作暂存表而不是用于SELECT
查询的视图,也就是说,当您想从S3
加载大量数据时,您可能需要将数据加载到临时表中,分析数据,去除冗余信息,最后一次性合并到原始表中。
虽然TEMP
表仅对当前会话是短暂的,但WITH
总是重新评估。