---
title: "Omvänd ordning på DISTINCT"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/84172-omvänd-ordning-på-distinct"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Web-Tor"
published: "2003-08-13T12:22:28.000Z"
updated: "2003-08-16T09:52:42.000Z"
replies: 10
views: 361
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/84172-omvänd-ordning-på-distinct"
---

# Omvänd ordning på DISTINCT

## #1 — Web-Tor, 2003-08-13T12:22Z

**Databasen:** 

```
button | name
1 | Kalle
1 | Olle
2 | Sven
```

**Frågan:** 

```
SELECT DISTINCT button, name FROM Content ORDER BY button
```

**Resultet:**
1 \| Kalle
2 \| Sven

Så långt stämmer allt men nu vill jag ha följande resultat:
1 \| Olle
2 \| Sven

Hur löser jag det?

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

## #2 — LarsG, 2003-08-13T12:25Z

Jag förstår inte hur du kan få det resultat du får med den frågan.

Jag tycker att du borde få alla poster.

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

## #3 — @nders, 2003-08-13T12:25Z

Den SQL-fråga du visar borde ge resultatet i din första illustration om tabellens innehåll. gör den inte det?\`

Du kan ju alltid lägga till fler sorteringsalternativ i ORDER BY, men jag vet inte riktigt om det hjälper, ty jag förstår inte riktigt problemet. ORDER BY button, name DESC?

Är du säker på att resultatet av frågan blir som du skriver?

Mvh

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

## #4 — Web-Tor, 2003-08-13T12:37Z

Klart att ni har rätt (vore ju konstigt annars med en SQL-moderator och ett marsvin). :p

SQL-frågan och databasen är betydligt mer kompicerade än det jag visade och jag missade en del när jag skulle förenkla det hela.
Nu har det löst sig i alla fall. :)

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

## #5 — jepsO, 2003-08-13T22:10Z

Får man fråga hur du löste det? 

Jag har samma problem med en dagbokstabell där senaste inlägg i respektive dagbok ska visas.

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

## #6 — Web-Tor, 2003-08-14T07:18Z

Grejen med mitt problem var ju att jag skulle ha ut unika värden ur databasen. Ditt problem borde enkeltt kunna lösas genom att bara ta ut den post som har "högst" datum.

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

## #7 — jepsO, 2003-08-14T09:05Z

Jo, men när jag gör en SELECT DISTINCT på användar-id för dagboken blir denna SELECT felaktigt sorterad.

Detta medför att när jag sedan gör en SELECT ... WHERE anvid = {användar-id} ORDER BY datum DESC (med LIMIT 1 / TOP 1) utifrån den första SELECTen hamnar den listningen i fel ordning, eftersom det är sorteringen i SELECT DISTINCT som avgör.

Nu är det möjligt att jag för den här tråden åt fel håll. Säg åt mig i så fall :).

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

## #8 — LarsG, 2003-08-14T09:18Z

jeps0:

Du får nog backa lite för jag begriper ingenting. Distinct har inget med sorteringsordning att göra.

Kan du beskriva vilka tabeller som är inblandade, ge ett exempel på datainnehåll och vilket resultat du vill ha.

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

## #9 — jepsO, 2003-08-14T14:04Z

Okej, jag skriver om inlägget från MySQL-forumet, eftersom det inte blev någe vidare. 

Jag har en tabell **dagbok** i vilken flera personers dagboksinlägg lagras.

Relevanta fält:
**id** \- unika inläggs-id:t
**anvid** \- användar-id, alltså vem som skrivit inlägget
**datum**

På sidan listadagbocker.php ska alla dagböcker synas med rubriken till det senaste inlägget i respektive dagbok. Listningen ska ske i datumordning med den senast uppdaterade dagboken först.

Exempel:

```
-----------------------
| id | anvid | datum  |
-----------------------
|  1 |     1 | 030807 |
|  2 |     2 | 030809 |
|  3 |     1 | 030810 |
|  4 |     3 | 030811 |
|  5 |     2 | 030812 |
|  6 |     3 | 030813 |
|  7 |     4 | 030814 |
-----------------------
```

Ovanstående vill jag ska visas såhär:

```
-----------------------
| id | anvid | datum  |
-----------------------
|  7 |     4 | 030814 |
|  6 |     3 | 030813 |
|  5 |     2 | 030812 |
|  3 |     1 | 030810 |
-----------------------
```

Därav DISCTINCT, men jag vet inte om det är rätt väg att gå...

Red: Ooops, fixat nu :).

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

## #10 — LarsG, 2003-08-14T14:17Z

Hur går det här ihop? Id 7 finns inte med i ditt exempeldata

Men jag tror att det är detta du vill ha 

<http://www.mysql.com/doc/en/example-Maximum-column-group-row.html>

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

## #11 — jepsO, 2003-08-16T09:52Z

Tack för hjälpen!

Ett tips för andra som har samma problem: Skit i vad som står i själva artikeln. Bland kommentarerna finns en LEFT JOIN-variant som fixar biffen på ett mycket enklare och snyggare sätt. Såhär gjorde jag i alla fall:

```
SELECT dagbok.*
FROM dagbok LEFT JOIN dagbok AS d2
ON dagbok.anvid = d2.anvid AND dagbok.datum < d2.datum
WHERE d2.anvid IS NULL 
ORDER BY dagbok.datum DESC
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/84172-omvänd-ordning-på-distinct
