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中文網其他相關文章!