webForumDet fria alternativet

ta bort efter 30

Databaser & SQL

13 svar · 392 visningar · startad av dendålige

Medlem sedan jan. 2003188 inlägg
Frågan#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)

Medlem sedan feb. 200112 078 inlägg
#2

Flyttas från ASP, VBScript.

Medlem sedan mars 20007 896 inlägg
#3

Vilken version av MySQL använder du?

DELETE FROM mess
WHERE id NOT IN (
     SELECT id
     FROM mess
     ORDER BY id DESC
     LIMIT 30
);
Medlem sedan jan. 2003188 inlägg
#4

hmmm funkade inte så bra det där heller... har 3.14 eller något sådant tror jag...

Medlem sedan jan. 2003188 inlägg
#5

3.23 är det...

Medlem sedan dec. 200012 464 inlägg
#6

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,...)
Medlem sedan jan. 2003188 inlägg
#7

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?

Medlem sedan juni 200032 967 inlägg
#8
SELECT ID FROM mess ORDER BY ID DESC LIMIT 30
Medlem sedan jan. 2003188 inlägg
#9

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?

Medlem sedan juni 200032 967 inlägg
#10

Jo, du måste loopa ut dem till en kanonläcker sträng som du sedan använder i din DELETE-fråga.

Medlem sedan jan. 2003188 inlägg
#11

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?

Medlem sedan juni 200032 967 inlägg
#12

typ:

' öppna connectionobjekt
' öppna recordsetobjekt

while not recordsetobjektet.eof
     strIDs = strIDs & "," & recordsetobjektet(0)
     recordsetobjektet.movenext
wend
strIDs = Right(strIDs, Len(strIDs)-1)
Medlem sedan aug. 2002733 inlägg
#13

Fråga, går inte detta?

DELET TOP 30 * FROM [tabell] ORDER BY id ASC
Medlem sedan dec. 200012 464 inlägg
#14

Svar:

Nej.

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)