Archief - Random Distinct Selection

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Sick-Boy

Legacy Member
Ik heb een tabel met drie kolommen: ID, Value en Type.

Ik wil van elk type twee willekeurige rijen ophalen. Als ik Distinct gebruik krijg ik maar een rij voor elk type en bovendien steeds dezelfde rij voor dat type.

Ik kan wel een oplossing bedenken door subqueries te gebruiken, maar ik vroeg mij af of het ook in een enkele query gaat.

d-zilla

Legacy Member
je kan ORDER BY RAND() doen. Echter is dit niet echt een goede oplossing als het een grote tabel is, dan gaat die query niet echt heel snel zijn.

Sick-Boy

Legacy Member
Dat is niet de oplossing, dan krijg je een permutatie van de resulterende rijen (Dus de volgorde is anders, niet het element van een bepaald type).

d-zilla

Legacy Member
Code:
SELECT * FROM tabel AS t
GROUP BY t.type
ORDER BY rand()
LIMIT 2
dit zou het moeten doen. Als ik je bedoeling juist snap tenminste.

EDIT: hmm ge wilt van elk type 2 verschillende ophalen, dan zal dit het niet doen :(

Sick-Boy

Legacy Member
De snelste oplossing blijkt met Unions te zijn en gewoon elke categorie af te gaan (1000 entries en 15 categorieën => 0.07 seconden... ).

Sick-Boy

Legacy Member
d-zilla zei:
Code:
SELECT * FROM tabel AS t
GROUP BY t.type
ORDER BY rand()
LIMIT 2
dit zou het moeten doen. Als ik je bedoeling juist snap tenminste.

EDIT: hmm ge wilt van elk type 2 verschillende ophalen, dan zal dit het niet doen :(

Het is al tot mij doorgedrongen dat 2 keer distinct niet gaat :).
Maar wat jij zegt zal dezelfde ID-waarde bij een Type teruggeven maar de volgorde waarin de rijen worden weergegeven verandert elke keer (door die RAND()).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan