SSteamMedlem sedan juli 2003169 inlägg Aaaaah nu har jag lyckats. :bire
Jag postar koden här ifall det hjälper någon som har haft samma problem som jag.
Set Rec=Conn.Execute("SELECT id FROM sent WHERE anvandare=" & Session("anv") & " ORDER BY ID DESC LIMIT 0,10)
If Not Rec.EOF Then
Do Until Rec.EOF
Radera = Radera & Rec("id") & ","
RS.MoveNext
Loop
Radera = Left(Radera, Len(Radera) - 1)
Conn.Execute("DELETE FROM sent WHERE anvandare=" & Session("anv") & " AND id NOT IN (" & Radera & ")")
End If
Set Rec = Nothing
Finns det någon bra lösning på det här nu?
Jag tar emot ~200 poster var 10'e minut och vill ta bort alla utom 10 sorterat på ett datum i stigande ordning.
Vill alltså bara ha kvar de 10 posterna som ligger närmast i tiden.
DBMS är MySql.
Tack!
PPeter SMedlem sedan dec. 20025 483 inlägg delete
from tbl
where id
not in ( select id
from tbl
order
by t desc
limit 10 )
...om nu MySQL kommit så långt att de stödjer LIMIT i subqueries. Annars kanske du får hämta ut en 10-lista med id:n på de du vill behålla och göra:
delete from tbl where id not in (' + MyCommaSeparatedListOfIDsToKeep + ')
Aha, bra, ska testa.
Försökte mig på det här:
$query = "DELETE FROM network_tournaments "
."ORDER BY StartDate DESC "
."LIMIT 50," . ($limit - 50);
...där $limit är det antal poster som lades till strax innan, men det funkar inte alls.
Verkar inte gå att använda Limit tillsammans med Offset i en DELETE fråga.
Nu när jag testar sättet ovan får jag "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'".
/red Aha, nu såg jag att du skrev "om nu..." och nej, det stöder dom inte...
Får köra det andra sättet med kommaseparerat då...
Peter S skrev:
delete from tbl where id not in (' + MyCommaSeparatedListOfIDsToKeep + ')
Fick bli den där lösningen... inte så snyggt men det funkar.
Nu har jag en liten fråga angående samma sak. Har ett system där texter sparas. texterna finns på x antal språk i y olika versioner.
Nu ska jag köra en fråga som en gång per dygn hämtar alla versioner utom den senaste på varje språk och sätter en "flagga" till 2 istället för defaultvärdet 1.
Har testat massa hit och dit med GROUP BY, men kom på att jag inte kan använda det, eftersom parent _kan_ vara samma för fler versioner och språk _kan_ vara samma.
Vore tacksam för lite hjälp med det här. DBMS är MySQL.
Tack!
/edit, kan vara bra att veta om några fältnamn:
cont_id (int, räknare)
cont_parentid (int, parent)
cont_language (int, språk)
cont_text (text)
cont_updated (int, UNIX_TIMESTAMP())