UPDATE messages set test_read =1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5, 5 ;
我正在尝试使用此查询使用limit更新一组5行,但mysql显示错误..下面的一个正在工作
UPDATE messages set test_read =1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5 ;
为什么第一个不工作?
答案 0 :(得分:53)
如果你真的必须这样做,你可以使用这样的东西:
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
);
答案 1 :(得分:5)
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”,则定义行的顺序和 这样的声明可以以任何语句格式记录 警告。