【发布时间】:2025-11-26 18:10:01
【问题描述】:
我知道 Azure 可以结合 IF x THEN UPDATE ELSE INSERT,是否可以用 Redshift SQL 做同样的事情?
我目前正在尝试此代码:
SELECT source,
CASE WHEN (SELECT 1 FROM state WHERE name =
'out_dev' AND environment = 'dev') > 0
THEN
(UPDATE state SET source='new source')
ELSE (
INSERT state (source, name, load_time, hash, environment)
VALUES ('test', 'out_dev', '2017-10-12 01:14:38', '"f324f873b05d0792a3192bc28f466835"', 'dev'))
END
FROM state
这会返回错误:
[Amazon](500310) Invalid operation: syntax error at or near "state"
Position: 132;
(UPDATE state SET source='new source')
我是 Redshift 的新手,如果我没有看到明显的内容,请见谅。
【问题讨论】:
-
这不是插入和更新的工作方式。为什么这被标记为天蓝色?您不能在这样的子查询中使用插入和更新。阅读有关更新和插入的 redshift/postgres 文档。
标签: if-statement sql-update amazon-redshift sql-insert