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

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

Susan Sarandon
リリース: 2025-01-04 14:19:40
オリジナル
814 人が閲覧しました

How to Randomly Select One Item from Each Category in MySQL?

MySQL を使用した個別のカテゴリからのランダムなアイテムの選択

カテゴリ化列を持つ "Items" テーブルを含むデータベース シナリオでは、次のタスクが実行されます。各カテゴリから 1 つのアイテムをランダムに選択するのは困難です。これに対処するために、MySQL クエリを利用した次のアプローチを検討してみましょう。

方法 1: 内部結合と部分グループ化

このクエリは、ランダムに並べ替えられたカテゴリに結合されたすべてのアイテムを取得します。

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 句と ORDER BY 句の両方が含まれているため、並べ替えの前にグループ化が実行されることに注意してください。したがって、内部クエリが結果を並べ替えた後、外部クエリは結果をグループ化します。この 2 つのクエリのアプローチにより、各カテゴリにランダムな項目が 1 つだけ含まれることが保証されます。

このクエリは解決策を提供しますが、潜在的な効率限界を認識することが重要です。パフォーマンスの最適化に関するあらゆる提案を歓迎します。

以上がMySQL の各カテゴリから 1 つのアイテムをランダムに選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート