考虑此表:
CREATE TABLE t (i int, j int, ...);
我想从一组SELECT语句中将数据插入表中。我的查询的简化版本是:
SELECT
INSERT INTO t VALUES ((SELECT 1), (SELECT 2), ...);
实际查询可能要复杂得多,并且各个子查询是独立的。不幸的是,此标准SQL语句(在SQL Server上可用)在SQL Data Warehouse上不起作用。引发以下错误:
无法执行查询。错误:插入值语句只能包含常量文字值或变量引用。
有办法解决这个问题吗?
似乎在INSERT .. VALUESSQL Data Warehouse语句上有一些限制,但在上没有限制INSERT .. SELECT。所请求的查询可以重写为:
INSERT .. VALUES
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;