webForumDet fria alternativet

Delete

7 svar · 214 visningar · startad av Asa

AsaMedlem sedan dec. 20011 860 inlägg
#1

Varför funkar ej detta? Det ska kolla att om det finns fler än 20 klotterinlägg så ska det gamlaste raderas

KlotterPS = 20
Conn.Execute("Delete From klotter Where id Not In (Select id From klotter Order By id desc limit " & KlotterPS & ")")
@ndersMedlem sedan juni 200032 969 inlägg
#2

MySQL stödjer bara subselects från och med version 4.1, så kör du på en äldre version är det därför.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Det är dock inte helt omöjligt att en fråga likt denna fungerar (obs: jag tar inget ansvar om den raderar fel poster ;) )

Conn.Execute("Delete From klotter Order By id desc limit " & KlotterPS)

Mvh

AsaMedlem sedan dec. 20011 860 inlägg
#4

Det går väl ej. Då raderar den väl fel?! Din kod gör väl att de 20 nyaste raderas?! Den ska radera alla andra utom de 2 nyaste!

@ndersMedlem sedan juni 200032 969 inlägg
#5

Såklart. Jag är lite för snabb på tangenterna. :)

Du kan bortse från mitt andra inlägg, jag tittar in senare.

Mvh

AsaMedlem sedan dec. 20011 860 inlägg
#6

Okej, det vore snällt av dig!

@ndersMedlem sedan juni 200032 969 inlägg
#7

Jag tror att det är just det där "alla utom de två nyaste" som skapar problemet iom ostödet för delfrågor. Om du använder webhotell har du kanske inte möjlighet att påverka, men är det egen server så kanske du skulle prova att uppgradera?

Jag är rädd att du måste göra detta med två SQL-frågor. 1) En select, och du lägger ihop ID-n alla utom de två nyaste, till en kommaseparerad sträng, och 2) en deletefråga där du slänger in alla idn i IN().

Se om du blir klokare av att läsa här.

Mvh

AsaMedlem sedan dec. 20011 860 inlägg
#8

Så här blev det:

Set RS=Conn.Execute("SELECT ID FROM Klotter ORDER BY ID DESC LIMIT 0,20")
'## -- loopa igenom resultatet -- 
Do Until RS.EOF
   strDelete = strDelete & RS("id") & ","  
RS.MoveNext
Loop

strDelete = Left(strDelete, Len(strDelete) - 1)  
Conn.Execute("Delete From klotter Where id Not In(" & strDelete & ")")
128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)