Frågan 18 mars 2004 12:39 #1 Vill ta bort alla inlägg som är äldre än dom 30 nyaste...
får det inte att fungera...
SQL = "DELETE FROM mess Order by datum Desc limit 30"
får bara:
[TCX][MyODBC]You have an error in your SQL syntax near 'order by datum DESC limit 30' at line 1
(MySQL)
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg Flyttas från ASP, VBScript.
S SPiN Medlem sedan mars 2000 7 896 inlägg Vilken version av MySQL använder du?
DELETE FROM mess
WHERE id NOT IN (
SELECT id
FROM mess
ORDER BY id DESC
LIMIT 30
);
hmmm funkade inte så bra det där heller... har 3.14 eller något sådant tror jag...
L LarsG Medlem sedan dec. 2000 12 464 inlägg Då får du först hämta de 30 med nyaste ID och sedan bygga
en delete fråga
delete from t where id not in (1,2,47,11,34,...)
det går inte bara att ta bort dom som är äldre en dom 30 nyaste?
om inte, hur ska man ta reda på dom 30 nyaste id nummrena då? på ett smidigt sett?
@nders Medlem sedan juni 2000 32 967 inlägg SELECT ID FROM mess ORDER BY ID DESC LIMIT 30
okey... hur ska jag köra på den sen då? behöver jag inte loopa ut dom 30 då?
och sen köra dom i delete sql frågan?
@nders Medlem sedan juni 2000 32 967 inlägg Jo, du måste loopa ut dem till en kanonläcker sträng som du sedan använder i din DELETE-fråga.
fyfan alltså... vad onödigt... och detta bara för man inte har den senaste versionen?
hmm... ska försöka fixa loopen och det när jag kommer hem då...
hmm... hur ska den se ut ungefär?
@nders Medlem sedan juni 2000 32 967 inlägg typ:
' öppna connectionobjekt
' öppna recordsetobjekt
while not recordsetobjektet.eof
strIDs = strIDs & "," & recordsetobjektet(0)
recordsetobjektet.movenext
wend
strIDs = Right(strIDs, Len(strIDs)-1)
A asp Medlem sedan aug. 2002 733 inlägg Fråga, går inte detta?
DELET TOP 30 * FROM [tabell] ORDER BY id ASC