Votre requête est contraire à la norme sql car vous répertoriez des colonnes dans la liste de sélection que vous ne répertoriez pas dans la clause group by, ni ne font l'objet d'une fonction d'agrégation, telle que count(). MySQL autorise cette fonctionnalité sous certains paramètres du mode sql.
Cependant, même si cette fonctionnalité a activé MySQL a restrictions sur les données choisies parmi les champs non agrégés :
Ainsi, au lieu d'utiliser group by, utilisez le tri et la clause limit pour limiter la sortie :
select * from job
where type = 1
order by rand()
limit 1
Veuillez également noter que cette méthode de sélection aléatoire est très gourmande en ressources, car MySQL doit d'abord trier l'ensemble des résultats sans utiliser d'index. Il existe d'autres moyens de sélectionner au hasard des données dans une table sans utiliser order by rand()
.