在C中使用select子查询子句执行更新语句

时间:2013-07-15 18:59:31

标签: mysql c database

我有以下在C中运行的sql:

snprintf(sql, 200, "update rec set name = (select name from pers where id = %d ) 
where id = %d",rec_id , emp_id );

mysql_query(conn, sql)返回一个成功的结果,但它在“名称”字段中的“rec”表中放置1而不是名称,但是当我printf输出并在MySQL中使用它时它正在工作精细。

update rec set name = (select name from pers where id = 104 ) where id =  43

我的sprintf有问题吗?或者必须添加什么?

我也试过像这样的静态sql命令

snprintf(sql,"update rec set name = (select name from pers where id = 104 ) where id = 43"); 

并且它还在rec.name

中加1

1 个答案:

答案 0 :(得分:0)

这是由于子查询返回的记录数吗?你可以通过提出一个返回条件来验证,例如2记录,以便名称设置为2?如果这是原因(虽然性能较差的方法)尝试拆分查询,看看它是否有效。