INSERT查询中的SELECT?

时间:2010-12-11 18:31:59

标签: c# sql-server visual-studio-2010

我正在尝试使用textbox从表会话,字段session_user中的表用户插入用户ID,但似乎它不起作用..

这是我的SQL代码,我正在使用visual studio并尝试插入SQL Server表

SqlCommand addsession = new SqlCommand
  ("insert into dbo.session(session_user) 
    values (select user_id from dbo.users where username = '" + TextBox1.Text + "')", 
   badersql);

4 个答案:

答案 0 :(得分:6)

当您执行VALUES时,不应使用INSERT ... SELECT关键字:

insert into dbo.session (session_user) select user_id from dbo.users ...

答案 1 :(得分:4)

如果要将查询结果插入另一个表格,请忽略VALUES关键字。

VALUES关键字可以始终替换为您要插入的值的简单SELECT 'dummy', 'value',但我建议您每当使用VALUES时仍然使用' or 1 = 1想明确表示你的结果 not 来自查询。

话虽如此,使用parameterized queries !!想象一下,如果有人要将以下文本输入TextBox1:

{{1}}

会发生什么?

答案 2 :(得分:2)

要从查询中插入记录,请使用以下插入语法:

insert into dbo.session (session_user) 
select user_id from dbo.users where username = '" + TextBox1.Text + "'

如果您希望像在values语句中那样插入一行,则可能需要执行select top 1 userid

答案 3 :(得分:0)

我做到了,问题是我无法命名我的记录session_user,所以我用se_user替换并解决了问题。

谢谢大家的帮助

所以正确的sql语句是

insert into sessions (se_user) select USER_ID from users where username = '';