我有以下在 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)
返回一个成功的结果,但它在“name”字段的“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
最佳答案
这是由于子查询返回的记录数吗?你能通过放置一个返回的条件来验证吗? 2条记录让名称设置为2?如果这是原因,那么(尽管性能较低的方法)尝试拆分查询并查看这次是否有效。
关于mysql - 在 C 中使用 select 子查询子句执行更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661816/