webForumDet fria alternativet

Ta bort allt utom 30 nyaste i MySQL

PHP

7 svar · 344 visningar · startad av toja

Medlem sedan mars 2001218 inlägg
Frågan#1

Har sökt här på webforum utan resultat...

kortfattat är min fråga om det finns någon motsvarighet till min påhitade query eller någon annan lösning...

Finns det något sätt att ta bort från MySQL... ungefär på detta sätt:

"DELETE FROM blabla WHERE bla = 'bla' ORDER BY DATE DESC LIMIT 30, X"
Alltså... den ska hela tiden ta bort alla mess utom de tretio nyaste..

Hoppas ni fattar.. :D

Medlem sedan dec. 200012 464 inlägg
#2
$q = "DELETE FROM blabla WHERE bla = 'bla' ORDER BY DATE DESC LIMIT 30, -1";
Medlem sedan mars 2001218 inlägg
#3

Tjena...

Har inte hunnit testa detta...
men måste bara fråga...
En kontrollfråga för att vara säker:
Om jag vill BEHÅLLA de 30 senaste... ska det vara "ORDER BY DATE DESC" eller ska jag skippa DESC... alltså.. i din query.. känns som det blir baklänges med -1.. haha.. :D

ORDER BY DATE DESC LIMIT 30, -1

-1 ... hur fungerar det.. är det samma sak som 1 fast baklänges...

kan man tex använta

ORDER BY DATE DESC LIMIT -1, -10

För att visa de tio sista i databasen.?!

Medlem sedan dec. 200012 464 inlägg
#4

Desc skall vara kvar. -1 innebär att man tar till och med sista posten i resultatet.

Det går inte att ange ett negativt offset för limit.

Medlem sedan mars 2001218 inlägg
#5

Okej.. tack då lärde jag mig ngt nytt.. :D

Medlem sedan maj 2002647 inlägg
#6

Jag med...

Medlem sedan okt. 20001 285 inlägg
#7

detta funkar inte

finns det någon annan lösning ? typ räkna ut antal, minus 30 bla bla eller ?

Medlem sedan okt. 20001 285 inlägg
#8

hmm, vet inte om min lösning är bra, men den fungerar för mig

// ================================= Ta bort alla utom 30 senaste ===================================

$ids = mysql_query("SELECT id FROM newstable ORDER BY timestamp DESC LIMIT 1") or die (mysql_error());
$lineup = mysql_fetch_array($ids);
$number = $lineup['id'] -30;
mysql_query("DELETE FROM newstable WHERE id < '$number'") or die (mysql_error());

// ==================================================================================================

kan bli problemtiskt om en nyhet är borttagen och det id numret saknas.. körde den på en sida som skrev ut nyheter och det funkade okej.. finns säkert nån bättre lösning

250 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)