2013-11-20 30 views
1

大家好我想拿出一個sql將刪除數據庫中的一個最古老的行,目前我有這樣的:MySQL的刪除最早的記錄表中​​的

DELETE FROM `videos` WHERE date_added IS NOT NULL LIMIT 1 

意志,只有不斷從刪除我的數據庫的頂部或將隨機選擇?

+0

它不是「隨機的」,但沒有ORDER BY子句(或GROUP BY或完整的索引知識),您無法保證LIMIT的結果。 – Strawberry

回答

0
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 
0

單程,你可以米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 
0

試試這個

DELETE FROM `videos` order by date_added DESC LIMIT 1 
2

你需要按日期來訂購吧,降,所以第一個結果是最古老的一個,然後刪除第一個結果。

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; 
0

您還可以通過ID刪除記錄(如果是自動遞增)

DELETE FROM `videos` order by id DESC LIMIT 1 

這將刪除最後一個記錄