ホームページ >データベース >mysql チュートリアル >MySQL でランダムなサブセットを選択し、特定のフィールドで並べ替えるにはどうすればよいですか?
大規模なデータセットを処理する場合、多くの場合、レコードのランダムなサブセットを抽出し、特定の基準に基づいてそれらをさらに並べ替える必要があります。 MySQL の ORDER BY 句は、これを実現する機能を提供します。
1000 件のレコードを持つデータベース テーブル ユーザーがあるシナリオを考えてみましょう。 20 人のランダムなユーザーを選択し、結果を名前の昇順に並べ替えるには、最初に次のクエリを使用します:
SELECT * FROM users WHERE 1 ORDER BY rand(), name ASC LIMIT 20
ただし、このクエリは真にランダム化された結果を保証しません。 ORDER BY rand() 部分はレコードをシャッフルしますが、WHERE 1 条件は基本的にすべてのレコードを選択することでランダム性を打ち消します。
望ましい動作を実現するために、サブクエリを使用してランダムな選択プロセスを分離します。
SELECT * FROM ( SELECT * FROM users ORDER BY rand() LIMIT 20 ) T1 ORDER BY name
内部クエリは、ORDER BY rand() と LIMIT 20 を使用して 20 人のランダム ユーザーを選択します。次に、外部クエリは ORDER BY name 句を適用して、選択されたユーザーをアルファベット順に並べます。このアプローチでは、レコードのランダムなサブセットが生成され、その後、目的のフィールドによって並べ替えられ、意図した結果が得られます。
以上がMySQL でランダムなサブセットを選択し、特定のフィールドで並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。