MySQL の各カテゴリからランダム レコードを選択する
このデータベース クエリには、テーブル内の各カテゴリからランダム レコードを選択することが含まれます。提供されたテーブルには、「id」、「name」、および「category」の列を含む「Items」テーブルが含まれています。各アイテムは、「id」列と「category」列を持つ「カテゴリ」テーブルで表される 7 つのカテゴリの 1 つに属します。
このクエリに効果的にアプローチするには、結合と RAND() 関数の組み合わせを使用できます。 。このタスクを実行するクエリは次のとおりです。
SELECT * FROM ( SELECT c.id AS cid, c.category, i.id AS iid, i.name FROM categories c INNER JOIN items i ON c.id = i.category ORDER BY RAND() ) AS shuffled_items GROUP BY cid
このクエリは、まず "category" 列で "Categories" テーブルと "Items" テーブルを結合し、すべてのアイテムとそれに対応するカテゴリを取得します。 ORDER BY RAND() 句は、結果にランダムな順序を適用します。その後、クエリはサブクエリでラップされ、「cid」列によってグループ化されます。このグループ化により、各カテゴリが単一のランダム レコードに制限されるようになります。
大きなテーブルの場合、パフォーマンスの最適化が必要になる場合があることに注意してください。クエリの実行が遅い場合は、MySQL の TEMPORARY TABLES を使用するか、「category」列にインデックスを作成することを検討してください。
以上がMySQL の各カテゴリからランダムなレコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。