3

我有以下在 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

4

1 回答 1

0

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

于 2013-07-16T08:35:25.500 回答