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

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

Susan Sarandon
リリース: 2024-12-28 02:02:14
オリジナル
438 人が閲覧しました

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

複数のカテゴリにわたるデータベース選択のランダム化

ここで提示される課題は、データベース内の各カテゴリから 1 つのランダムなレコードを取得することです。 Items テーブルにはこれらのレコードが格納され、それぞれが対応する Categories テーブルで指定されたカテゴリに割り当てられます。

このタスクに取り組むには、RAND() 関数と LIMIT 1 句を使用して MySQL 固有のランダム性を利用できます。ただし、ここでのユニークな点は、個別のカテゴリごとにランダムなレコードを選択する必要があることです。

次のクエリは、この課題にエレガントに取り組んでいます。

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
ログイン後にコピー

このクエリの構造により、1 つのレコードを取得できます。各カテゴリからのランダム レコード:

  • メイン クエリはサブクエリを使用して、それぞれのカテゴリに結合されたすべてのアイテムを並べ替えて取得します。
  • サブクエリは、部分的な GROUP BY によって使用される後続のフィルタリングの基礎として機能します。これにより、カテゴリ ID (cid) に基づいて「shuffled_items」をグループ化することで、カテゴリごとに 1 つのレコードが確保されます。

このアプローチは、並外れた速度を誇るわけではありませんが、複数のレコードにわたるランダムなレコード選択の課題に効果的に対処します。カテゴリー。このクエリの有用性をさらに高めるため、最適化のための代替案を歓迎します。

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

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