更新使用 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 的值取而代之的是第二个参数。
我想将 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 的值取而代之的是第二个参数。