如何在沒有「LIMIT & IN」子查詢支援的 MySQL 中刪除除最新 15 條之外的所有貼文?

Linda Hamilton
發布: 2024-11-11 15:44:03
原創
194 人瀏覽過

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

MySQL 子查詢限制:刪除最新 15 則貼文

在資料庫最佳化領域,經常需要刪除冗餘或過時的資料。這個問題探討如何使用 MySQL 子查詢刪除除最新 15 個條款之外的所有貼文。

原始查詢:

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)
登入後複製

但是,由於 MySQL 缺乏對早期版本中的「LIMIT & IN/ALL/ANY/SOME」子查詢。為了解決這個問題,可以使用修改後的查詢:

DELETE
FROM posts
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id
            FROM posts
            ORDER BY timestamp DESC
            LIMIT 0, 15
      ) 
      AS t);
登入後複製

在此修改後的查詢中,使用別名「t」引入了一個附加子查詢作為派生表。此衍生表包含最新 15 個貼文的 ID,根據時間戳記按降序排序。然後,主查詢在刪除貼文時利用此衍生表來排除那些特定的 ID。

透過使用此解決方法,可以達到刪除所有貼文的預期結果,除了 MySQL 版本中最近的 15 個貼文之外。不支援“LIMIT & IN/ALL/ANY/SOME”子查詢。這種修改後的方法有效地刪除了過時的帖子,同時保留了最新的帖子以供進一步參考。

以上是如何在沒有「LIMIT & IN」子查詢支援的 MySQL 中刪除除最新 15 條之外的所有貼文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板