1
我想從「idx_links」表中刪除除最新的20個之外的所有舊行。 pubDate是時間戳。刪除除前20位的所有舊行
這個選擇帶來的行:
SELECT @row := @row + 1 AS row, t.*
FROM idx_links t, (SELECT @row := 0) r
having(row>20)
ORDER BY pubDate DESC
如何刪除此行?
我想從「idx_links」表中刪除除最新的20個之外的所有舊行。 pubDate是時間戳。刪除除前20位的所有舊行
這個選擇帶來的行:
SELECT @row := @row + 1 AS row, t.*
FROM idx_links t, (SELECT @row := 0) r
having(row>20)
ORDER BY pubDate DESC
如何刪除此行?
這個怎麼樣 - 刪除pubDate排名前20的所有行。
DELETE idx_links
WHERE ID NOT IN (SELECT ID FROM idx_links
ORDER BY pubDate DESC LIMIT 0,20);
交替日期,避免子查詢的IN
條款:
DELETE idx_links
WHERE pubDate < (SELECT pubDate FROM idx_links
ORDER BY pubDate DESC LIMIT 20,1);
我想,(因爲我給你相同的答案),但我有這個錯誤:'[ERR ] 1235 - 此版本的MySQL尚不支持「LIMIT&IN/ALL/ANY/SOME子查詢」。我有MySql 5.1.39。 – Marco
反正+1你,因爲我覺得這可能是最新的MySQL釋放一個很好的解決方案...... – Marco
馬可,怎麼樣通過pubdate的從上面找到20 pubdate的,並刪除所有誰比,老年人(此時,而不是ID)。 –