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/

相关文章:

MYSQL - 什么是主键?

定义表列时 SQL 连接停止工作

MySQL 查询在多列上使用 DISTINCT 并按日期排序(最后一个时间戳)

mysql 按日期选择总和组

c - 将 io._BufferedReader 传递给 c 函数

c - 声明中带有指针的函数。为什么?

database - xampp phpmyadmin,格式参数不正确

mysql - 通过 MySQL 选择日期之前的行

mysql - 为什么JBoss在Hibernate + JPA下找不到MySQL Driver

c - 为什么这个简单的代码有时不起作用????然后当我重新启动我的代码块时它有时会起作用