小编典典

插入值语句在SQL数据仓库中只能包含常量文字值或变量引用

sql

考虑此表:

CREATE TABLE t (i int, j int, ...);

我想从一组SELECT语句中将数据插入表中。我的查询的简化版本是:

INSERT INTO t VALUES ((SELECT 1), (SELECT 2), ...);

实际查询可能要复杂得多,并且各个子查询是独立的。不幸的是,此标准SQL语句(在SQL Server上可用)在SQL Data
Warehouse上不起作用。引发以下错误:

无法执行查询。错误:插入值语句只能包含常量文字值或变量引用。

有办法解决这个问题吗?


阅读 185

收藏
2021-04-14

共1个答案

小编典典

似乎在INSERT .. VALUESSQL Data Warehouse语句上有一些限制,但在上没有限制INSERT .. SELECT。所请求的查询可以重写为:

INSERT INTO t SELECT (SELECT 1), (SELECT 2);

插入多行时,此解决方法也很有用:

-- Doesn't work:
INSERT INTO t VALUES ((SELECT 1), 2), ((SELECT 2), 3), ...;

-- Works:
INSERT INTO t SELECT (SELECT 1), 2 UNION ALL SELECT (SELECT 2), 3;
2021-04-14