更新使用 SQL 中的 SELECT 查询选择的 table

UPDATING a table which is selected using SELECT query in SQL

我想将 Update 关键字与 select 一起使用,例如

UPDATE(select col1,col2,col3 from UNPIVOTED_TABLE)
SET col1=0
WHERE col1 IS NULL
SET col2=0
WHERE col2 is NULL
SET col3=0
WHERE col3 is NULL

我知道我的语法不对,但这基本上就是我想要实现的目标

我正在 selecting 3 列并且有一些 null 值我想更新并将其设置为 0

我也无法更新 table 本身,因为原始 table 是 UNPIVOTED 而我在 select 声明中是 PIVOTING 它,我需要旋转结果(即我 selected 的列)(col1,col2,col3)

如果相关的话,我也在使用亚马逊 Athena

如果您使用的是 Athena,我可以假设您只有只读权限,无法真正更新原始数据。

在你的情况下,如果你想将空值表示为 0,你可以使用 `IFNULL(column, 0)

有关 IFNULL 的更多信息,您可以阅读 here

如果我没看错,你只要coalesce():

select 
    coalesce(col1, 0) col1,
    coalesce(col2, 0) col2,
    coalesce(col3, 0) col3
from unpivoted_table

colaesce() 检查第一个参数是否为 null:如果不是,则 returns 原样的值,否则 returns 的值取而代之的是第二个参数。