繁体   English   中英

SQL-使用子查询插入语句,然后更新语句

[英]SQL - Insert into statement with subquery, then update statement

我一直在努力处理SQL语句一段时间,而且似乎无法解决这个问题。

我想使用SELECT子查询在表A插入新记录。 完成此操作后,我想更新表B一条记录。

这是我尝试过的( 虚拟SQL,外观相似 ):

INSERT INTO [A] (ID, Expiration, Type) 
VALUES ({some-id}, (
    SELECT [B].[Expiration], [B].[Type] FROM [B] 
    WHERE [B].ID = {other-id}))

运行该语句时,出现以下错误:

未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式

我不太确定错误在哪里,但是我怀疑这与select where子句有关

编辑此查询从.net解决方案中运行。 我有这样的查询设置:

string insertStatement = "INSERT INTO [A] (ID, Expiration, Type) "
    + "VALUES (@someId, (SELECT [B].[Expiration], [B].[Type] "
    + "WHERE [B].ID = @otherId))";

command.CommandText = insertStatement;
command.AddParameter("@someId", someId);
command.AddParameter("@otherId", otherId);
command.ExecuteNonQuery();

尝试这个

INSERT INTO [A] (ID, Expiration, Type)
    SELECT {some-id},[B].[Expiration], [B].[Type] FROM [B] 
    WHERE [B].ID = {other-id}

将您的@someId变量移到Select查询中。

尝试这个

string insertStatement = "INSERT INTO [A] (ID, Expiration, Type) "
    + "(SELECT @someId, [B].[Expiration], [B].[Type] "
    + "WHERE [B].ID = @otherId)";

command.CommandText = insertStatement;
command.AddParameter("@someId", someId);
command.AddParameter("@otherId", otherId);
command.ExecuteNonQuery();

尝试这个..

INSERT INTO A(ID,Expiration,Type)
SELECT @SOME_ID,[B].[Expiration], [B].[Type]
FROM [B]
WHERE [B].ID = {other-id}

它应该为您工作..

暂无
暂无

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

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