---
title: "rand() ger dubletter"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/153180-rand-ger-dubletter"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "leniz"
published: "2006-10-30T11:12:43.000Z"
updated: "2006-10-31T10:36:55.000Z"
replies: 10
views: 477
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/153180-rand-ger-dubletter"
---

# rand() ger dubletter

## #1 — leniz, 2006-10-30T11:12Z

Hej!

Är det så att man alltid riskerar att rand() ger dubletter (eller ännu fler visningar av samma post) om man väljer order by rand() och kan det bli så att vissa poster inte alls visas på bekostnad av andra posters dubletter???

Finns det något man kan göra åt det?  :(

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

## #2 — leniz, 2006-10-30T11:14Z

... och har det något med webbhotellet att göra eftersom jag inte får dubletter när jag kör koden lokalt på min egen dator?

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

## #3 — nitro2k01, 2006-10-30T11:19Z

Pröva att köra **SELECT DISTINCT** Jag är inte säker på syntaxen. Antingen kanske det går med **SELECT DISTINCT \* FROM...** eller så kanske du måste ange ett fält **SELECT DISTINCT id, message, ... FROM...**

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

## #4 — @nders, 2006-10-30T11:31Z

Rand() påverkar inte urvalet, utan endast sorteringen. Så om du ser till att din SQL-fråga endast ger unika svar så bör ju sorteringen fungera.

Om frågan inte gäller poster i samma resultatset så ja, det kan absolut bli så att vissa poster slumpas fram oftare än andra. Jag gjorde ett litet test för ett tag sedan (visserligen med Microsoft SQL Server) bara för att se hur stor risken är, och i en datamängd på c:a 30000 poster, och c:a 100000 slumpningar, så hade vissa poster blivit framslumpade 20 gånger, och ett tusental inte alls.

Slump är inte någon exakt vetenskap...

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

## #5 — leniz, 2006-10-30T11:53Z

Hej!
Tack för era svar!
Jag använder mig redan av select distinct och sql frågan utan rand() ger endast unika poster. Sql frågan är dock rätt komplex med flera "join" och flera villkor som ska uppfyllas.
Mvh Lena

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

## #6 — leniz, 2006-10-30T12:00Z

En annan detalj; om jag tar bort order by rand() och istället väljer en annan order by så blir det alltså bara unika poster. Men det sammanlagda antalet poster är exakt samma som vid order by rand() med dubletter. Alltså måste ju en del poster inte visas alls.

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

## #7 — LarsG, 2006-10-30T12:19Z

```
select * from 
(select distinct ..
) dt
order by rand()
```

Flyttas från ASP

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

## #8 — leniz, 2006-10-30T12:45Z

Hej Lars!

Blir error in sql syntax om jag skriver så i koden.

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

## #9 — Peter S, 2006-10-30T12:47Z

Skriv alltid ut SQL-frågan och vilket DBMS samt version av DBMS det gäller.

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

## #10 — leniz, 2006-10-30T12:55Z

Hej igen!
Har dragit slutsatsen att det måste ha med funktionen för sidnavigering att göra. Samma poster visas nämligen aldrig på samma sida även om jag ändrar och t.ex. sätter att jag vill visa 100 poster per sida.
Exakt vad det är som orsaker felet vet jag inte. Men det är ju underligt att det fungerar med alla andra sorteringsalternativ (order by) utom just rand().

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

## #11 — @nders, 2006-10-31T10:36Z

Om du ställer en SQL-fråga med rand()-sortering två gånger så får du ju två olika sorteringsordningar. Det är inget konstigt med det.

Vill du ha slumpvis sortering och paging så får du se till att du bara ställer frågan en enda gång, och se till att cachea resultatet på något sätt, temporär tabell, array i sessionsobjekt, etc.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/153180-rand-ger-dubletter
