---
title: "Upprepade problem med GROUP BY"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/80822-upprepade-problem-med-group-by"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "quiz"
published: "2003-06-29T00:57:57.000Z"
updated: "2003-06-29T08:52:06.000Z"
replies: 4
views: 199
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/80822-upprepade-problem-med-group-by"
---

# Upprepade problem med GROUP BY

## #1 — quiz, 2003-06-29T00:57Z

Vad jag vill att SQL satsen ska göra:
Av de 30 senaste dagarnas registreringar ska den högsta poängen tas ut. Varje persons namn får endast förekomma en gång.
Tabellen heter highscore och fälten heter score, playername och regwhen.

SELECT MAX(score), score, playername, regwhen FROM highscore WHERE TO_DAYS(NOW()) - TO_DAYS(regwhen) \<= 30 GROUP BY playername ORDER BY score DESC
Detta är mitt senaste försök som tyvärr inte fungerar.

Denna sats används nu:
SELECT playername, score, regwhen FROM highscore WHERE TO_DAYS(NOW()) - TO_DAYS(regwhen) \<= 30 ORDER BY score DESC
Det jag saknar i denna är funktionaliteten för att ett och samma namn bara ska visas en gång i listan.
Serven använder MySQL 3.23.56.

Är det någon som har en idé om hur det skulle kunna lösas?

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

## #2 — chrille_p, 2003-06-29T07:10Z

Prova med:

SELECT DISTINCT playername,score,regwhen

//

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

## #3 — agneta_rung, 2003-06-29T07:58Z

Om du vill ha en rad per spelare blir du tvungen att utelämna regwhen. Det kan ju mycket väl hända att en spelare ligger på sitt maxresultat flera gånger... Om du utelämnar regwhen kan du formulera frågan så här

```
select playername, max(score)
from highscore
group by playername
```

Om du vill ha med regwhen kan du göra så här, men då kan det alltså bli fler rader per spelare, med olika regwhen-datum.

```
select playername, score, regwhen
from highscore hs
where score = 
  (
  select max(score)
  from highscore
  where hs.playername = playername
  )
```

Ditt where-villkor ska förstås med också! Även i subselecten.

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

## #4 — cyprys, 2003-06-29T08:48Z

subselecten fungerar dock inte på din version av mySQL

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

## #5 — quiz, 2003-06-29T08:52Z

Tack för de svar jag fått. Ska vänta med att lösa problemet tills webhotellet uppgraderar MySQL till 4.1

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/80822-upprepade-problem-med-group-by
