Twoje zapytanie jest niezgodne ze standardem sql, ponieważ na liście select umieszczasz kolumny, które nie są wymienione w klauzuli group by, ani nie są przedmiotem funkcji agregujących, takich jak count(). MySQL umożliwia tę funkcjonalność w określonych ustawieniach trybu sql.
Jednak nawet jeśli ta funkcja jest włączona, MySQL ma ograniczenia dotyczące dane wybrane z pól niezagregowanych :
Tak więc, zamiast używać group by, użyj sortowania i klauzuli limit, aby ograniczyć wyjście:
select * from job
where type = 1
order by rand()
limit 1
Proszę również zauważyć, że ta metoda losowego wyboru jest bardzo zasobochłonna, ponieważ MySQL musi najpierw posortować cały zbiór wyników bez użycia żadnego indeksu. Istnieją inne sposoby losowego wybierania danych z tabeli bez użycia order by rand()
.