Kueri Anda bertentangan dengan standar sql karena Anda mencantumkan kolom dalam daftar pilih yang tidak Anda cantumkan dalam klausa grup menurut, juga merupakan subjek dari fungsi agregat, seperti count(). MySQL mengizinkan fungsi ini di bawah pengaturan mode sql tertentu.
Namun, meskipun fungsi ini diaktifkan, MySQL memiliki pembatasan pada data yang dipilih dari bidang non-agregat :
Jadi, daripada menggunakan group by, gunakan sorting dan klausa limit untuk membatasi output:
select * from job
where type = 1
order by rand()
limit 1
Harap perhatikan juga bahwa metode pemilihan acak ini sangat intensif sumber daya, karena MySQL harus terlebih dahulu mengurutkan seluruh hasil tanpa menggunakan indeks apa pun. Ada cara lain untuk memilih data secara acak dari tabel tanpa menggunakan order by rand()
.