大家好我想拿出一個sql將刪除數據庫中的一個最古老的行,目前我有這樣的:MySQL的刪除最早的記錄表中的
DELETE FROM `videos` WHERE date_added IS NOT NULL LIMIT 1
意志,只有不斷從刪除我的數據庫的頂部或將隨機選擇?
大家好我想拿出一個sql將刪除數據庫中的一個最古老的行,目前我有這樣的:MySQL的刪除最早的記錄表中的
DELETE FROM `videos` WHERE date_added IS NOT NULL LIMIT 1
意志,只有不斷從刪除我的數據庫的頂部或將隨機選擇?
您可以使用order by
和嘗試像這個 -
DELETE FROM `videos` WHERE date_added IS NOT NULL order by date_added desc LIMIT 1
欲瞭解更多信息:http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
DELETE FROM `videos` order by date_added desc LIMIT 1
如果你只需要刪除上面的查詢最早的記錄使用,否則需要檢查一些條件使用這一個
DELETE FROM `videos` WHERE date_added IS NOT NULL order by date_added desc LIMIT 1
單程,你可以米atch以最小日期值,然後可以刪除記錄。
DELETE FROM `videos` WHERE date_added = (SELECT min(date_added) from videos) AND date_added IS NOT NULL LIMIT 1
而在第二種方式中,您可以使用order by子句進行刪除。
DELETE FROM `videos` WHERE date_added IS NOT NULL ORDER BY date_added ASC LIMIT 1
試試這個
DELETE FROM `videos` order by date_added DESC LIMIT 1
你需要按日期來訂購吧,降,所以第一個結果是最古老的一個,然後刪除第一個結果。
DELETE FROM `videos`
WHERE data_added IS NOT NULL
ORDER BY date_added DESC
LIMIT 1;
該解決方案,只要您date_added
列是MySQL的日期型或數字型(如Unix時間戳)工作。如果沒有,你應該投入數據或修改你的數據庫的結構(我推薦以後)。
爲了投中的數據,你可以這樣做:
DELETE FROM `videos`
WHERE data_added IS NOT NULL
ORDER BY Cast(date_added as date) DESC
LIMIT 1;
您還可以通過ID刪除記錄(如果是自動遞增)
DELETE FROM `videos` order by id DESC LIMIT 1
這將刪除最後一個記錄
它不是「隨機的」,但沒有ORDER BY子句(或GROUP BY或完整的索引知識),您無法保證LIMIT的結果。 – Strawberry