group by句にリストされていない列を選択リストにリストし、count()などの集計関数の対象にならないため、クエリはSQL標準に反します。 MySQLでは、特定のSQLモード設定でこの機能を使用できます。
ただし、この機能が有効になっている場合でも、MySQLには制限があります。集計されていないフィールドから選択されたデータ :
したがって、group byを使用する代わりに、sortingとlimit句を使用して出力を制限します。
select * from job
where type = 1
order by rand()
limit 1
また、MySQLはインデックスを使用せずに結果セット全体を最初にソートする必要があるため、このランダム選択方法は非常にリソースを消費することに注意してください。 order by rand()
を使用せずに、テーブルからデータをランダムに選択する方法は他にもあります。 。