ホームページ >データベース >mysql チュートリアル >SQL テーブルから 5 つの異なる行をランダムに選択するにはどうすればよいですか?

SQL テーブルから 5 つの異なる行をランダムに選択するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-17 12:46:13614ブラウズ

How Can I Select Five Random Distinct Rows from a SQL Table?

SQL ランダム行選択手法

SQL テーブルから行をランダムに選択することは、さまざまなアプリケーションで一般的なタスクです。 このガイドでは、さまざまな SQL 言語を使用して、「customerNames」という名前のテーブル (「Id」列と「Name」列を持つ) から 5 つの一意の行を選択する方法を説明します。

MSSQL (Microsoft SQL Server) メソッド

MSSQL Server 2005 以降の場合、このクエリは 5 つのランダムな行を効率的に取得します。

<code class="language-sql">SELECT TOP 5 Id, Name FROM customerNames
ORDER BY NEWID()</code>

NEWID() はランダムな GUID を生成し、TOP 5 句が結果セットを制限する前にランダムな順序付けを保証します。

データベース間のランダム行選択 (単一行)

上記は MSSQL で機能しますが、次のメソッドはさまざまなデータベース システムで 1 つの ランダム行を選択する方法を示しています。 これらを調整して 5 行を選択するには、追加のテクニックが必要です (詳細は後述)。

  • MySQL:
<code class="language-sql">SELECT column FROM table
ORDER BY RAND()
LIMIT 1</code>
  • PostgreSQL:
<code class="language-sql">SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1</code>
  • IBM DB2:
<code class="language-sql">SELECT column, RAND() as IDX 
FROM table 
ORDER BY IDX FETCH FIRST 1 ROWS ONLY</code>
  • オラクル:
<code class="language-sql">SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1</code>
  • SQLite:
<code class="language-sql">SELECT column FROM table 
ORDER BY RANDOM() LIMIT 1</code>

"column""table" を実際の列名とテーブル名に置き換えてください。

ランダムな複数行の選択 (5 行)

単一行の選択を 5 つの異なる行に拡張するには、多くの場合、より洗練されたアプローチが必要になります。 単一行のクエリを繰り返し実行する最も単純な方法は非効率的であり、一意性が保証されない可能性があります。 一般に、ランダム性と区別性の両方を保証するために、より大きなデータセットの場合は、ウィンドウ関数または自己結合を含むより高度な手法が好まれます。 具体的な方法はデータベースシステムによって異なります。

パフォーマンスに関する考慮事項

ランダムな行選択クエリのパフォーマンスは、テーブル サイズとデータベース エンジンの最適化によって影響を受ける可能性があります。 非常に大きなテーブルの場合、パフォーマンスのボトルネックを回避するために別のサンプリング戦略が必要になる場合があります。

以上がSQL テーブルから 5 つの異なる行をランダムに選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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