在MySQL中使用额度更新多行?(update multiple rows using limit

2019-07-20 16:45发布

    UPDATE messages set test_read =1 
        WHERE userid='xyz' 
        ORDER BY date_added DESC  
        LIMIT 5, 5 ;

我想利用这个查询来更新一组使用限制,但MySQL的5行正显示出低于error..The一个工作

    UPDATE messages set test_read =1 
        WHERE userid='xyz' 
        ORDER BY date_added DESC  
        LIMIT 5 ;

为什么不工作的第一个?

Answer 1:

如果你真的必须这样做,你可以使用这样的事情:

 UPDATE messages SET test_read=1
 WHERE id IN (
     SELECT id FROM (
         SELECT id FROM messages 
         ORDER BY date_added DESC  
         LIMIT 5, 5
     ) tmp
 );


Answer 2:

http://bugs.mysql.com/bug.php?id=42415

该文件指出,与LIMIT子句任何UPDATE语句被认为是不安全的,因为受影响的行的顺序没有定义: http://dev.mysql.com/doc/refman/5.1/en/replication-features-limit.html

但是,如果使用“ORDER BY PK”,行的顺序被定义和这样的表述可能在声明格式记录没有任何警告。



文章来源: update multiple rows using limit in mysql?