【发布时间】:2019-08-18 14:39:34
【问题描述】:
尝试在 INSERT VALUES 子句中使用 IFNULL 时出现编译错误。
SQL:
INSERT INTO widgets
VALUES
(12, (select ifnull(max(c), 0)+1 from DCSN_Testing where c = 1), 444)
错误:
SQL compilation error: Invalid expression
[(SELECT (NULLABILITY_EXTERNAL(1)) + 1 AS "IFNULL(MAX(C), 0)+1"
FROM (VALUES (null)) DCSN_TESTING WHERE TRUE)] in VALUES clause
【问题讨论】:
-
目前 Snowflake 对可以放入 VALUES 子句的内容的支持有限。最安全的做法是只将常量放在那里,然后将 INSERT..SELECT 用于其他任何内容,就像 Rich 建议的那样。
-
@MarcinZukowski,但这仅适用于一排?一堆记录呢?
-
您始终可以使用 UNION ALL。我看到了您对 MAX 的评论,但很难理解问题所在。如果您提供完整的复制案例,帮助您会容易得多。
-
@Marcin Zukowski 有关此问题的详细信息,请参阅此链接:stackoverflow.com/questions/55367597/…
标签: sql-insert snowflake-cloud-data-platform ifnull