在MySQL中使用限制更新多行?
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5 ;
我正在尝试使用此查询来更新一组使用限制5行,但MySQL显示错误..下面的一个工作
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5 ;
为什么第一个不工作?
如果你真的必须这样做,你可以使用这样的东西:
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 );
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”,则会定义行的顺序,并且可以以声明格式logging此语句,而不会有任何警告。