我有以下在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答案 0 :(得分:0)
这是由于子查询返回的记录数吗?你可以通过提出一个返回条件来验证,例如2记录,以便名称设置为2?如果这是原因(虽然性能较差的方法)尝试拆分查询,看看它是否有效。