hal*_*sed 28 mysql sql sql-update
UPDATE messages set test_read =1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5, 5 ;
Run Code Online (Sandbox Code Playgroud)
我试图使用此查询使用限制更新一组5行,但mysql显示错误..下面的一个正在工作
UPDATE messages set test_read =1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5 ;
Run Code Online (Sandbox Code Playgroud)
为什么第一个不工作?
Luk*_*ský 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
);
Run Code Online (Sandbox Code Playgroud)
小智 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",则会定义行的顺序,并且可以以语句格式记录此类语句,而不会发出任何警告.
归档时间: |
|
查看次数: |
47302 次 |
最近记录: |