C# 插入查询中的内部联接?
我想做这样的事情:C# 插入查询中的内部联接?,c#,sql,insert,C#,Sql,Insert,我想做这样的事情: insert into TableA (val1,val2) values ("value",(select top 1 tableB.X from tableB where tableB.Y=@Y)) 我得到这个错误: 在此上下文中不允许子查询。只允许使用标量表达式 如何停止该错误?假设您使用的是SQL Server: insert into tableA (val1, val2) select top 1 'value', tableB.x fr
insert into TableA
(val1,val2)
values
("value",(select top 1 tableB.X from tableB where tableB.Y=@Y))
我得到这个错误:
在此上下文中不允许子查询。只允许使用标量表达式
如何停止该错误?假设您使用的是SQL Server:
insert into tableA
(val1, val2)
select top 1 'value', tableB.x from tableB where tableB.Y = @y
我假设您必须直接使用insert into表格选择。。。语法
在这种情况下没有“值”。
上面的人比我快,但我同意他们的建议你很接近:
INSERT INTO TableA(val1, val2)
SELECT top 1 "value", X FROM TableB WHERE Y = @y
试试这个
insert into TableA (val1,val2)
select top 1 "value",X from tableB where Y=@Y
另一个较差的选项,代码更改较少: 定义一个临时值
declare @scalarval int
select @scalarval = tableB.X from tableB where tableB.Y=@Y
insert into TableA (val1,val2)
values("value",@scalarval)
然而,插入语法更清晰
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服务器我相信你是对的;我不相信你能把TOP1选择变成这样的变量。也许选择前1名?修复了查询。