首頁 >資料庫 >mysql教程 >如何使用 LIMIT 正確更新 MySQL 中特定範圍的行?

如何使用 LIMIT 正確更新 MySQL 中特定範圍的行?

Patricia Arquette
Patricia Arquette原創
2024-12-31 12:03:08361瀏覽

How to Correctly Update a Specific Range of Rows in MySQL Using LIMIT?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn