ホームページ >データベース >mysql チュートリアル >MySQL の各カテゴリからランダムなレコードを 1 つ選択するにはどうすればよいですか?

MySQL の各カテゴリからランダムなレコードを 1 つ選択するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-20 10:52:09826ブラウズ

How to Select One Random Record from Each Category in MySQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。