SQL的INSERT语句中嵌入SELECT语句

蜀雁 2014-06-20 04:35:48
string SqlAccountKind = "INSERT INTO dbo.AccountKind VALUES(" + txtAccountID.Text.Trim() + ", \'" + txtAccountName.Text.Trim() + "\', 1, " +
"SELECT MK_Id FROM dbo.MeterKind WHERE MK_Name = \'" + txtAccountName.Text.Trim() + "\', " +
txtSysKey.Text.Trim() + ", " + txtMainNo.Text.Trim() + "," + txtBuyLimit.Text.Trim() + ", " +
txtPrestorage.Text.Trim() + ", " + txtWarning.Text.Trim() + ", 0, " +
txtOverdraught.Text.Trim() + ", 0, 0, -1, 0)";
这个是要执行的INSERT语句,其中有项内容通过 "SELECT MK_Id FROM dbo.MeterKind WHERE MK_Name = \'" + txtAccountName.Text.Trim() + "\语句从另一张表中查询,在最终执行时,报错:“SELECT”附近有语法错误。请问大神:这里能不能嵌套,若能,这语句该怎样修改?谢谢。
...全文
491 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiniao19830822 2014-06-21
  • 打赏
  • 举报
回复
应该是下面的写法 INSERT INTO dbo.AccountKind SELECT 1, 'TM复费计费水表(YC)', 1, MK_Id, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 FROM dbo.MeterKind WHERE MK_Name = 'TM复费计费水表(YC)'
蜀雁 2014-06-21
  • 打赏
  • 举报
回复
引用 4 楼 smthgdin 的回复:
直接用select代替values。 就是说不要values () 直接insert into table select xxxx from xxx,1,2,3,4,5;
这里的SELECT语句只能放在第一个位置吗?我在SQL中写的查询语句,SELECT语句放中间位置也报错: INSERT INTO dbo.AccountKind SELECT 1, 'TM复费计费水表(YC)', 1, SELECT MK_Id FROM dbo.MeterKind WHERE MK_Name = 'TM复费计费水表(YC)', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
smthgdin_020 2014-06-20
  • 打赏
  • 举报
回复
引用 楼主 u013262149 的回复:
string SqlAccountKind = "INSERT INTO dbo.AccountKind VALUES(" + txtAccountID.Text.Trim() + ", \'" + txtAccountName.Text.Trim() + "\', 1, " + "SELECT MK_Id FROM dbo.MeterKind WHERE MK_Name = \'" + txtAccountName.Text.Trim() + "\', " + txtSysKey.Text.Trim() + ", " + txtMainNo.Text.Trim() + "," + txtBuyLimit.Text.Trim() + ", " + txtPrestorage.Text.Trim() + ", " + txtWarning.Text.Trim() + ", 0, " + txtOverdraught.Text.Trim() + ", 0, 0, -1, 0)"; 这个是要执行的INSERT语句,其中有项内容通过 "SELECT MK_Id FROM dbo.MeterKind WHERE MK_Name = \'" + txtAccountName.Text.Trim() + "\语句从另一张表中查询,在最终执行时,报错:“SELECT”附近有语法错误。请问大神:这里能不能嵌套,若能,这语句该怎样修改?谢谢。
直接用select代替values。 就是说不要values () 直接insert into table select xxxx from xxx,1,2,3,4,5;
蜀雁 2014-06-20
  • 打赏
  • 举报
回复
拼接没有错。我在想是不是语法哪儿出错了。
exception92 2014-06-20
  • 打赏
  • 举报
回复
嵌套是绝对可以的。 出错也就是你拼接sql语句有问题,你可以把你所有的参数都是索引的形式传入。 比如:

string SqlAccountKind =string.Format("select * from table where id={0}",1);
於黾 2014-06-20
  • 打赏
  • 举报
回复
你必须保证select出来的东西是单行单列的,才能将结果当成值在其他语句中使用. 这个保证必须用语法实现,而不是通过你数据库中的数据来保证唯一性. 比如可以用select sum(),select count()等只能返回唯一结果的语句.

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧