Mysql 如何使用单个查询获取最后更新的行

Mysql 如何使用单个查询获取最后更新的行,mysql,Mysql,在发布之前,我搜索了足够多的内容 我的表格结构: $this->db->set('cid', 1, FALSE) ->where(array( 'aid' => $a_id, 'bid' => $b_id )) ->update('my_table') ->select('did');

在发布之前,我搜索了足够多的内容

我的表格结构:

$this->db->set('cid', 1, FALSE)
        ->where(array(
                    'aid'   => $a_id,
                    'bid'   => $b_id
                ))
        ->update('my_table')
        ->select('did');
援助|投标| cid |没有|

其中,
aid
bid
一起是主键

当我使用
where子句更新
cid
的值作为辅助时,bid
我还想获得
更新行的
did值

类似这样的内容:

$this->db->set('cid', 1, FALSE)
        ->where(array(
                    'aid'   => $a_id,
                    'bid'   => $b_id
                ))
        ->update('my_table')
        ->select('did');
上述查询显示:

$this->db->set('cid', 1, FALSE)
        ->where(array(
                    'aid'   => $a_id,
                    'bid'   => $b_id
                ))
        ->update('my_table')
        ->select('did');
致命错误:对中的非对象调用成员函数select()

我试过这个:

$this->db->set('cid', 1, FALSE)
        ->where(array(
                    'aid'   => $a_id,
                    'bid'   => $b_id
                ))
        ->update('my_table')
        ->select('did');


这类似于3个查询。

我建议获取要更新的值,将它们的id存储在一个数组中,然后使用
更新
,其中id位于(1,2,…)

MySQL不支持您尝试执行的操作。您需要运行至少两个查询,并且由于您第一次获取值,并且已经知道要更新的值,因此您还可以在
更新
后重新创建新行及其值,而无需使用查询

在您给出的示例中:

$this->db->set('cid', 1, FALSE)
        ->where(array(
                    'aid'   => $a_id,
                    'bid'   => $b_id
                ))
        ->update('my_table')
        ->select('did');

set()。但是
update()
返回一个值,该值是结果,没有名为
select()
的函数,也没有
set()
where()
的函数。为什么使用更多查询会有问题?