MYSQL获取更新行的主键ID(更新返回所在行)
1 SET @update_id := 0; 2 UPDATE some_table SET row = 'value', id = (SELECT @update_id := id) 3 WHERE some_other_row = 'blah' LIMIT 1; 4 SELECT @update_id;
声明一个用户变量 @update_id ,之后在update数据时要多更新一个字段,就是将当前主键值更新为当前主键值(其实就是没更新),更新主键字段并不是目的,只是为了将当前主键值赋值给@update_id,就是这句: ( SELECT @update_id := id )。
更新了多条记录也可以用下面的方式
SET @uids := null; UPDATE footable SET foo = 'bar' WHERE fooid > 5 AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) ); SELECT @uids;