插入查询中的内连接?

时间:2010-02-26 16:43:33

标签: c# sql insert

我想做这样的事情:

insert into TableA 
   (val1,val2) 
values
   ("value",(select top 1 tableB.X from tableB where tableB.Y=@Y))

我收到此错误:

  

在此上下文中不允许使用子查询。只允许标量表达式

如何阻止该错误?

6 个答案:

答案 0 :(得分:9)

假设您正在使用SQL Server:

insert into tableA 
  (val1, val2) 
select top 1 'value', tableB.x from tableB where tableB.Y = @y 

答案 1 :(得分:1)

我假设你必须直接使用insert select into ...语法。
在这种情况下没有“价值” 上面的人比我快,但我同意他们的建议

答案 2 :(得分:1)

你很亲密:

INSERT INTO TableA(val1, val2)
SELECT top 1 "value",  X FROM TableB WHERE Y = @y

答案 3 :(得分:1)

试试这个

insert into TableA (val1,val2) 
   select top 1 "value",X from tableB where Y=@Y

答案 4 :(得分:1)

另一个较差的选项是代码更改: 定义临时值。

declare @scalarval int
select @scalarval = tableB.X from tableB where tableB.Y=@Y
insert into TableA (val1,val2) 
values("value",@scalarval)

然而,插入语法更清晰。

答案 5 :(得分:0)

StringBuilder sb=new StringBuilder();
sb.Append("declare @id int select @id = top 1 TableB.id from TableB where TableB.DefaultName=@DefaultName order by TableB.id desc insert into TableA(col1,col2,col3,col4)  Values (@val1,@val2,@val3,@id)");

顶部附近的语法不正确。

如何完成这个?

// mssql server