Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 与第条及;临时桌子?_Sql_Amazon Redshift_Data Warehouse_Temp Tables_With Clause - Fatal编程技术网

Sql 与第条及;临时桌子?

Sql 与第条及;临时桌子?,sql,amazon-redshift,data-warehouse,temp-tables,with-clause,Sql,Amazon Redshift,Data Warehouse,Temp Tables,With Clause,用外行的话说,WITH子句和临时表之间的主要区别是什么 在哪种情况下,使用其中一种比使用另一种更好 子句通常用于select查询,当您必须对包含复杂子句(如HAVING)的两个子查询执行某些联接时(尽管不一定)。一般来说,WITH子句只能在SELECT语句中使用 但在必须对数据进行操作的情况下,这意味着您希望在某些条件下更改数据,甚至希望根据您更愿意遵循的某些复杂条件再次删除某些行。虽然大多数情况下可以通过和来实现,但通常需要一些复杂的逻辑,在TEMP表中,您可以使用两个不同的SQL语句来实现相

用外行的话说,WITH子句和临时表之间的主要区别是什么

在哪种情况下,使用其中一种比使用另一种更好

子句通常用于select查询,当您必须对包含复杂子句(如
HAVING
)的两个子查询执行某些联接时(尽管不一定)。一般来说,
WITH
子句只能在
SELECT
语句中使用

但在必须对数据进行操作的情况下,这意味着您希望在某些条件下更改数据,甚至希望根据您更愿意遵循的某些复杂条件再次删除某些行。虽然大多数情况下可以通过
来实现,但通常需要一些复杂的逻辑,在
TEMP
表中,您可以使用两个不同的SQL语句来实现相同的功能

此外,
TEMP
表通常用作暂存表,而不是
SELECT
查询的视图,也就是说,
TEMP
表用于从
S3
加载大量数据时,您可能需要将数据加载到TEMP表中,分析数据,删除冗余并最终一次性将其合并到原始表中


虽然
TEMP
表格仅在当前会话中是暂时的,但始终会重新评估
WITH

主要区别在于临时表是存储表。CTE更类似于视图,可以帮助您以更易于阅读、更符合逻辑的方式表达SQL。表和视图之间也存在相同的差异,因为表可以让您以高效的方式完成任务

如果您正在构建一个非常复杂的查询或需要分阶段构建的查询,WITH子句/CTE将帮助您做到这一点。但是,如果您希望在表中存储数据以提高性能,那么最好使用临时表。
类似地,可以重复使用临时表,因此如果在多个查询中使用相同的代码,则可以考虑临时表而不是CTE。

密钥差异:必须在关联查询中直接使用OFF子句。对于临时表,您可以在会话期间使用它们。所以,他们的寿命是不同的。