[英]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.