Mysql 在C中使用select子查询子句执行update语句
我有以下在C中运行的sql:Mysql 在C中使用select子查询子句执行update语句,mysql,c,database,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\u query(conn,sql)返回一个成功的结果,但它将1放入“name”字段的“rec”表中,而不是名称,但是当我printf输出并在mysql中使用它时,它工作正常 update rec set name = (se
snprintf(sql, 200, "update rec set name = (select name from pers where id = %d )
where id = %d",rec_id , emp_id );
mysql\u query(conn,sql)
返回一个成功的结果,但它将1放入“name”字段的“rec”表中,而不是名称,但是当我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");
它还把1放在rec.name中这是由于子查询返回的记录计数造成的吗?您是否可以通过设置一个返回2条记录的条件进行验证,以便将名称设置为2?如果这是原因,那么(尽管这种方法性能较差)尝试拆分查询,看看这次是否有效 激活MySQL并查看它到底执行了什么命令是很有趣的。执行printf(“%s”,sql)以查看您是否正确构建了查询。常规日志显示“Quit”我执行了printf,如上图中所示question@user_iv:很明显,
Quit
不是我们感兴趣的日志条目。它显示了什么命令导致rec.name
变成1
?