繁体   English   中英

SELECT 语句作为 INSERT INTO 语句中的子查询

[英]A SELECT statement as a subquery in an INSERT INTO statement

以下查询是否会插入与子查询结果集中的行数一样多的行? 如果不是,我怎样才能插入 n 行,其中 n 是子查询结果集中的行数?

INSERT INTO A (x, y)
VALUES (@x, SELECT B.z FROM B)

@x=5

不,它最多只能插入 1 行。 如果要插入多行,则需要类似

INSERT INTO A (x,y) SELECT @X, B.z FROM b

请注意,没有values子句,@x 已集成到SELECT查询中

如果您想获取所有值,可以将其修改为:

INSERT INTO A (x, y) 
SELECT @x, B.z 
FROM B

摆脱 VALUES 子句。 您的查询变为:

INSERT INTO A (x, y) SELECT @X, B.z FROM B

试试这个方法。

INSERT INTO A
    (x, y)
    SELECT @x, B.z
        FROM B
DECLARE @X int = 5

INSERT INTO A
(
    x,
    y
)
SELECT    
    @X,
    B.Z
FROM B

这是行不通的。 您犯了与在多行查询中使用聚合 function 相同的错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM