Uw query is in strijd met de sql-standaard omdat u kolommen in de select-lijst vermeldt die u niet in de group by-clausule vermeldt, en die ook geen onderwerp zijn van een aggregatiefunctie, zoals count(). MySQL staat deze functionaliteit toe onder bepaalde instellingen voor sql-modus.
Maar zelfs als deze functionaliteit is ingeschakeld, heeft MySQL beperkingen op de gegevens gekozen uit de niet-geaggregeerde velden :
Dus, in plaats van group by te gebruiken, gebruik je sortering en de limit-clausule om de output te beperken:
select * from job
where type = 1
order by rand()
limit 1
Merk ook op dat deze willekeurige selectiemethode zeer arbeidsintensief is, aangezien MySQL eerst de volledige resultatenset moet sorteren zonder een index te gebruiken. Er zijn andere manieren om willekeurig gegevens uit een tabel te selecteren zonder gebruik te maken van order by rand()
.