我想做这样的事情:
insert into TableA
(val1,val2)
values
("value",(select top 1 tableB.X from tableB where tableB.Y=@Y))
我收到此错误:
在此上下文中不允许使用子查询。只允许标量表达式
如何阻止该错误?
答案 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