使用两个表进行Redshift表更新

时间:2018-07-30 21:31:07

标签: amazon-web-services sql-update cursor amazon-redshift updates

我需要进行更新。要求是使用表1中的数据更新表2。请在下面的两个表中找到示例记录:

TABLE A    
-----------------
colA | colB | colC
-----------------
 1    AAA      ABC
 2    BBB      DEF
 3    CCC      GHI
 3    CCC      HIJ

TABLE B    
-----------------
colA1 | colB1 | colC1
-----------------
 1     AAA      
 2     BBB
 3     CCC
 3     CCC

我需要用colC的值更新colC1。预期输出如下所示

TABLE B    
-----------------
colA1 | colB1 | colC1
-----------------
 1    AAA      ABC
 2    BBB      DEF
 3    CCC      GHI
 3    CCC      HIJ

我们需要为此使用游标吗,还是像下面所示的简单的更新语句呢?

 Update table B
 set colC1 = table A.colC
 from TABLE A, TABLE B
 where colA1 = colA
 and colB1 = colB;

1 个答案:

答案 0 :(得分:1)

您的SQL看起来很好。

游标通常用于对数据库的编程访问,在该数据库中,程序一次一次浏览结果,光标指向“当前记录”。在普通的SQL更新语句中不需要。

注意事项...在Amazon Redshift中,在一行上使用UDPATE会导致将现有行标记为删除并创建新行。 (这是使用列式数据库的副作用。)如果更新了许多行,则意味着磁盘存储的效率降低。可以通过偶尔运行0来进行改进,该操作将删除已删除的存储。