SET @uids := "";
UPDATE myf___ingtable
SET id = id
WHERE id < 5
AND ( SELECT @uids := CONCAT_WS(',', CAST(id AS CHAR CHARACTER SET utf8), @uids) );
SELECT @uids;
我必须对 id 进行强制转换(不知道为什么) ... ... 否则我无法获得@uids 内容(它是一个 blob)
顺便说一句,非常感谢波米克的回答!
可以在不调用 LAST _ INSERT _ ID ()的情况下生成序列,但是
这样使用函数的实用工具是 ID 值是
作为最后一个自动生成的值维护在服务器中
是多用户安全的,因为多个客户端可以发出 UPDATE
语句并使用 SELECT 语句获取它们自己的序列值
(或 mysql _ insert _ id ()) ,不影响或受其他
生成自己的序列值的客户端。
使用 LAST _ INSERT _ ID ()执行 INSERT 或 UPDATE 语句
函数还将修改 mysqli _ insert _ id ()返回的值
功能。
总而言之:
$affected_rows = DB::getAffectedRows("
update users set status = 'processing'
where status = 'pending' and last_insert_id(user_id)
limit 1"
);
if ($affected_rows) {
$user_id = DB::getInsertId();
}