Men nu till sorteringen:
Den listar ju tio stycken rader i detta fall och nu skulle jag vilja att den först skall få fram 5 stycken med högst cnt-värde.
Sedan så vill jag få fram slumpvisa rader ur tabellen.
Man skulle ju kunna tänka sig en union men vet inte om det är så bra det heller.
[s]Select id,cnt From tbl LIMIT 0,5 order by cnt
union all
Select id,cnt From tbl LIMIT 0,5 order by rand()[/s]
Funkar inte med två order by.
Databas är mySql 5.
Helst så skulle jag även vilja mixa de högsta värdena med de slumpmässiga och se till att de alltid är unika rader. Så att inte vissa återkommer.
Kanske så här? Om raden är en av topp-5 sorterar du på hur många med mindre cnt det finns, annars sorterar du på nåt slumpmässigt. Totalt freestylat:
select
id,
cnt,
(select count(*) from tabellen t2 where t2.cnt < t1.cnt) as less_cnt
from
tabellen t1
order by
case
when less_cnt < 5 then less_cnt
else rand() + 5
end case
257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25