---
title: "Om resultat (top20) -> Highscore"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/113408-om-resultat-top20-highscore"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ironhead"
published: "2004-10-12T13:05:41.000Z"
updated: "2004-10-12T18:27:54.000Z"
replies: 12
views: 428
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/113408-om-resultat-top20-highscore"
---

# Om resultat (top20) -> Highscore

## #1 — ironhead, 2004-10-12T13:05Z

Hej!

Jag har en MS SQL 7.0 med en databas som heter Highscore där jag vill lagra poäng & smeknamn för att ha till en topplista från ett spel.

min insert ser ut såhär:

```
oConn.Execute("INSERT INTO Highscore (score,nick) VALUES('1100','"Pelle"')")
```

Jag skulle vilja (om det är möjligt) att kolla av om resultatet (score) platsar för "top 20"...om det inte gör det, så gör ingen insert....kan man realisera det i själva SQL-satsen?

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

## #2 — LarsG, 2004-10-12T13:13Z

Varför har du score som en character? Byt till integer snarast (annars fungerar inte nedanstående).

```
INSERT INTO Highscore (score,nick) 
select distinct 1100,'Pelle' 
from Highscore
where 1100 not in (
    select top 20 score 
      from highscore 
    order by score desc)
```

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

## #3 — ironhead, 2004-10-12T13:57Z

Skrev fel i koden ang. score.

Problemet med denna selectsats är juh att även om jag byter namn eller är inom top20, så läggs inte resultatet in om jag har samma poäng som någon annan :(

Jag vill att alla resultat inom topp 20 ska läggas in oberoende av nick eller nåt annat.

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

## #4 — LarsG, 2004-10-12T14:03Z

Jag tänker ju fel

```
INSERT INTO Highscore (score,nick) 
select distinct 1100,'Pelle' 
from Highscore
where 1100 >= any (
    select top 20 score 
      from highscore 
    order by score desc)
```

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

## #5 — ironhead, 2004-10-12T14:17Z

Problemet är nu att om jag har flera 1200 poäng, så kan jag lägga in hur många poster som helst.

kan man deleta alla utanför top 20 samtidigt?

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

## #6 — LarsG, 2004-10-12T14:21Z

```
INSERT INTO Highscore (score,nick) 
select distinct 1100,'Pelle' 
from Highscore
where 1100 > (select min(score)
  from (select top 20 score 
      from highscore 
    order by score desc)dt )
```

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

## #7 — ironhead, 2004-10-12T14:26Z

Jag är superimponerad av din fart & klurighet med SQL-satser, men den lägger fortfarande till flera poster...

Bara det att den lägger max in 20 resultat av samma poäng.

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

## #8 — ironhead, 2004-10-12T14:42Z

Det funkar ju kanonbra, förutom att den lägger in så många poster....Skulle man direkt efter INSERTEN köra en DELETE på alla poster över TOP20 och vidare...

typ:

```
DELETE FROM Highscore WHERE score < (select top 20 score from highscore order by score desc)
```

Fast detta funkar juh inte...

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

## #9 — LarsG, 2004-10-12T15:20Z

Du behöver en primärnyckel. Lägg till en kolumn med identity/datetime. 

Vilken post vill du ta bort om det finns flera som har den lägsta highscoren?

Säg att du har en datetime kolumn, då kan du ta bort den post som har lägst highscore och lägst datum med

```
delete from highscore
where datetimeColumn in (select top 1 datetimeColumn
from highscore order by score,datetimeColumn)
```

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

## #10 — ironhead, 2004-10-12T17:51Z

> Du behöver en primärnyckel. Lägg till en kolumn med identity/datetime.

Jo, det har jag redan....
Super-mycket tack LarsG :)

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

## #11 — ironhead, 2004-10-12T17:59Z

```
delete from highscore
where datetimeColumn in (select top 1 datetimeColumn
from highscore order by score,datetimeColumn)
```

Med denna SQL-sats tar jag väl alltid bort den lägsta?
Om jag bara vill ta bort posterna över 20 räknat i score....hur ska man göra då?

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

## #12 — LarsG, 2004-10-12T18:01Z

Om du har en identity-kolumn som primärnyckel

```
delete from highscore
where id not in (select top 20 id
from highscore order by score desc)
```

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

## #13 — ironhead, 2004-10-12T18:27Z

Absolut lysande....återigen tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/113408-om-resultat-top20-highscore
