MySQL の各カテゴリから単一のランダム レコードを選択する
指定されたデータベースの各カテゴリからランダムな項目を取得するには、次の 2 つの方法があります。ステージアプローチがおすすめです。まず、クエリを使用してアイテムとカテゴリのテーブルをランダムな順序で結合します。
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();
このクエリは、それぞれのカテゴリに結合されたすべてのアイテムをランダムな順序で表示します。選択をカテゴリごとに 1 つのアイテムに制限するには、部分的な GROUP BY ステートメント内で前のクエリをネストします。
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;
この部分的な GROUP BY により、各カテゴリにはランダムに選択されたアイテムが 1 つだけ含まれることが保証されます。このアプローチが正しく機能するには、ORDER BY 句を GROUP BY 句の前に適用する必要があることに注意することが重要です。
この方法は最速ではないかもしれませんが、単一のランダム レコードを選択する信頼性の高い方法を提供します。 MySQL データベースの各カテゴリから。
以上がMySQL の各カテゴリからランダムなレコードを 1 つ選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。