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

标签 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) 返回一个成功的结果,但它在“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/

相关文章:

php - MySQL中 'updating'行的正确方法

database - 从标题生成独特的 slug

php - MySQL 特殊字符错误

java - 来自 MYSQL 的 java 中的有序列表 ul li 嵌套树

c - 如何为工具栏中的 GtkToolItem 创建监听器?

c - 队列算法的段错误

python - 有没有为 SQL 和 NoSQL 提供数据库抽象层的 python Web 应用程序框架?

mysql - 如何在多列上创建 FULLTEXT 索引?

php - 将 div 位置和大小属性插入 MySQL 数据库。如何使用 PHP 收集信息?

c - C 中关系运算符的前缀与后缀。运算符结合性如何影响?