我需要进行更新。要求是使用表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;
答案 0 :(得分:1)
您的SQL看起来很好。
游标通常用于对数据库的编程访问,在该数据库中,程序一次一次浏览结果,光标指向“当前记录”。在普通的SQL更新语句中不需要。
注意事项...在Amazon Redshift中,在一行上使用UDPATE会导致将现有行标记为删除并创建新行。 (这是使用列式数据库的副作用。)如果更新了许多行,则意味着磁盘存储的效率降低。可以通过偶尔运行0
来进行改进,该操作将删除已删除的存储。