2016-07-24 57 views
0

我想在表中插入两个值。其中一个实际上是从另一个表中使用select语句获取的,如下所示。使用select查询将值传递给插入查询

query = "INSERT INTO empallowance(emp_id_fk,allowance_id_fk) VALUES(SELECT emp_id FROM employee WHERE emp_cnic='" + cnic + "',@allowance_id_fk)"; 

存在语法错误异常,如图所示。

enter image description here

+0

请附上错误作为一个字符串,而不是从图片 - 将使人们更容易理解 –

回答

0

你不能那样做,但你可以创建一个select语句和insert its results

"INSERT INTO empallowance (emp_id_fk,allowance_id_fk) 
select emp_id, @allowance_id_fk 
from employee 
WHERE emp_cnic='" + cnic + "'" 

另外,注意,使用字符串连接到插入参数是脆弱的SQL注射 - 使用parameterized queries代替

0

您的SQL语句无效。使用以下内容:

query = "INSERT INTO empallowance SELECT emp_id, @allowance_id_fk FROM employee WHERE emp_cnic='" + cnic + "'"; 

您可以阅读有关该方法here的所有信息。

0

您可以修改您的查询如下:

query = "INSERT INTO empallowance(emp_id_fk,allowance_id_fk) SELECT emp_id, @allowance_id_fk FROM employee WHERE emp_cnic= ' " + cnic + "'"; 
0

添加“()”插入查询的分离选择查询之间。

INSERT INTO empallowance(emp_id_fk,allowance_id_fk) VALUES((SELECT emp_id FROM employee WHERE emp_cnic='" + cnic + "'),@allowance_id_fk) 
1

您必须在子查询中使用括号。 试试这个:

query = "INSERT INTO empallowance(emp_id_fk,allowance_id_fk) VALUES((SELECT emp_id FROM employee WHERE emp_cnic='" + cnic + "'),@allowance_id_fk)";