webForumDet fria alternativet

ta bort alla poster utom användarens top 10

Databaser & SQLur Databashanterare & SQL

8 svar · 429 visningar · startad av MoonCow

Medlem sedan juni 2001223 inlägg
Frågan#1

Tjenare! Hur gör man en sql-sats till en access för att ta bort alla utom de 10 senaste posterna på varje användare?

tabellen gastbok_inlagg:
|meddelande|fromUser|toUser|id|datum|

tack på förhand!

mvh /Max

Medlem sedan juni 2001223 inlägg
#2

snälla.. det är viktigt :(

Medlem sedan juni 2001223 inlägg
#3

och varför flyttade ni den? till sql... hmm... detta är en accessfråga... eller snarare en sql-satsfråga...

Medlem sedan juni 200032 969 inlägg
#4

eller snarare en sql-satsfråga

Just därför. Vad har problemet med ASP att göra?

Detta forum behandlar språket SQL.

Man kan använda sig av TOP om man ser till att kolumnen man sorterar efter enbart har unika värden. Så här hade jag försökt:

DELETE FROM gastbok_inlagg WHERE toUser = 12 AND ID NOT IN (SELECT TOP 10 ID FROM gastbok_inlagg WHERE toUser = 12 ORDER BY ID DESC)

Jag lade in villkoret toUser = 12 i frågan, men jag vet inte vad du vill ha där istället.

Mvh,

Medlem sedan juni 2001223 inlägg
#5

oj :r är dum dum dum... :) sorry..
funkade helfint det :) loopade igenom alla användare och körde den Sql-satsen på alla...

tnx to the good d00ds att Wf :) och speciellt dig @nders

Medlem sedan juni 200032 969 inlägg
#6

Najsigt!

Vassego!

Mvh,

Medlem sedan dec. 200012 464 inlägg
#7

Det här borde fungera utan att du har en loop

DELETE FROM gastbok_inlagg gi WHERE ID NOT IN " &_
" (SELECT TOP 10 ID FROM gastbok_inlagg WHERE toUser = gi.toUser ORDER BY ID DESC)
Medlem sedan apr. 2002183 inlägg
#8

Jag har en fråga angående svaret som du gav...
om jag skulle vilja ha samma funktion mot en mysql db, hur skriver jag då?...
-----------------------

strSQL ="DELETE FROM guestbook gi WHERE bookId NOT IN " &_
" (SELECT TOP 10 bookId FROM guestbook WHERE booktill = "& rs("namn") &" ORDER BY bookid DESC)"
Set rs2 = Conn.Execute(strSQL)

----------------------
Vad står "gi" på första raden för?
mvh Henrik

Medlem sedan dec. 200012 464 inlägg
#9

gi är ett korrelationsnamn som används i subselecten för att referera till den aktuella posten i den yttre tabellen.

Så vitt jag förstår så kan du inte få till motsvarande fråga med den begränsade funktionalitet som finns i Mysql. Du är nog tvungen att hämta id för de 10 sista posterna per användare i en loop och sedan bygga en sql-fråga.

125 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)