webForumDet fria alternativet
Logga in / Bli medlem

Delete

Databaser & SQL

7 svar · 214 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Trådstart#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 & ")")
Medlem sedan juni 200032 967 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.

Medlem sedan juni 200032 967 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

Medlem 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!

Medlem sedan juni 200032 967 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

Medlem sedan dec. 20011 860 inlägg
#6

Okej, det vore snällt av dig!

Medlem sedan juni 200032 967 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

Medlem 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 & ")")
265 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)