---
title: "Delete"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/76775-delete"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Asa"
published: "2003-05-13T10:23:14.000Z"
updated: "2003-05-13T14:02:58.000Z"
replies: 7
views: 214
page: 1
pages: 1
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/76775-delete"
---

# Delete

## #1 — Asa, 2003-05-13T10:23Z

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 & ")")
```

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

## #2 — @nders, 2003-05-13T10:25Z

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.

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

## #3 — @nders, 2003-05-13T10:27Z

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

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

## #4 — Asa, 2003-05-13T10:27Z

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!

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

## #5 — @nders, 2003-05-13T10:33Z

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

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

Mvh

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

## #6 — Asa, 2003-05-13T11:09Z

Okej, det vore snällt av dig!

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

## #7 — @nders, 2003-05-13T13:27Z

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](http://www.mysql.com/doc/en/DELETE.html).

Mvh

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

## #8 — Asa, 2003-05-13T14:02Z

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 & ")")
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/76775-delete
