MySQL:使用 LIMIT 更新多行
在 MySQL 中,LIMIT 子句可讓您限制查詢影響的行數。但是,當 LIMIT 與 UPDATE 語句一起使用時,嘗試更新特定範圍的行時會出現常見錯誤。
考慮以下查詢:
UPDATE messages SET test_read=1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5;
此查詢旨在更新 5 個行行,從「messages」表中的第五行開始,其中「userid」等於「xyz」。但是,此查詢將導致錯誤。
要理解原因,請務必注意此上下文中的 LIMIT 子句定義了偏移量和最大行數。在此範例中,它會檢索並限制顯示的行數,而不是更新它們。要更新特定範圍的行,可以使用子查詢:
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。然後,主 UPDATE 語句會比對這些 ID 並執行更新。這可確保僅修改所需的行。
以上是如何使用 LIMIT 正確更新 MySQL 中特定範圍的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!