---
title: "Radera alla poster men lämna kvar 10"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/141290-radera-alla-poster-men-lämna-kvar-10/page2"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Steam"
published: "2006-01-22T15:57:16.000Z"
updated: "2009-05-20T12:51:30.000Z"
replies: 25
views: 1524
page: 2
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/141290-radera-alla-poster-men-lämna-kvar-10"
---

# Radera alla poster men lämna kvar 10

_Sida 2 av 2._

## #21 — Steam, 2006-01-26T00:37Z

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
```

Permalänk: https://www.webforum.nu/p/1754164

## #22 — MickeA.com, 2009-02-10T15:16Z

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!

Permalänk: https://www.webforum.nu/p/2168361

## #23 — Peter S, 2009-02-10T15:33Z

```
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 + ')
```

Permalänk: https://www.webforum.nu/p/2168365

## #24 — MickeA.com, 2009-02-10T15:47Z

Aha, bra, ska testa.
Försökte mig på det här:

```php
$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å...

Permalänk: https://www.webforum.nu/p/2168370

## #25 — MickeA.com, 2009-02-10T16:17Z

> **[Peter S skrev:](https://www.webforum.nu/p/1455792)**
>
> ```
> delete from tbl where id not in (' + MyCommaSeparatedListOfIDsToKeep + ')
> ```

Fick bli den där lösningen... inte så snyggt men det funkar.

Permalänk: https://www.webforum.nu/p/2168374

## #26 — MickeA.com, 2009-05-20T12:51Z

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())
```

Permalänk: https://www.webforum.nu/p/2185339

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/141290-radera-alla-poster-men-lämna-kvar-10/page2  
Föregående sida: https://www.webforum.nu/amne/databaser-sql/141290-radera-alla-poster-men-lämna-kvar-10.md
