MySQL:多行更新的限制子句
在 MySQL 中,LIMIT 子句通常用于限制从一张桌子。但是,它也可以用于指定要更新的最大行数。但是,必须考虑某些约束以防止错误。
提供的查询:
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5 ;
失败,因为 LIMIT 的第二个参数指定偏移量,而不是限制。因此,查询要求 MySQL 更新第 10 行之后的行(跳过前 5 行,然后应用偏移量 5)。
要解决此问题,请使用以下查询:
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5 ;
此查询正确更新前 5 行。
如果您希望更新特定范围的行,例如将第 6 行更新为10、您可以使用子查询:
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 );
该查询使用子查询来选择指定范围内的行的ID。然后,主查询相应地更新这些行。
以上是如何使用 MySQL 的 LIMIT 子句更新特定数量或范围的行?的详细内容。更多信息请关注PHP中文网其他相关文章!