異なる PostgreSQL: 選択、注文基準、および制限 (例)

⚡ スマートサマリー

異なる PostgreSQL SELECT文と組み合わせて使用​​することで、重複する行を削除し、一意の値のみを返します。このテキストでは、SELECT構文、SQLシェルとpgAdmin、単一列および複数列に対するDISTINCT、そしてDISTINCTとGROUP BYの違いについて解説します。

  • 🔎 選択する: SELECT column FROM table を使用して、テーブルから列を取得します。
  • 🧹 明確: 重複する行を削除し、一意の値ごとに1行を残します。
  • ↕️ 注文者: デフォルトでは昇順でソートされ、DESCを指定すると降順でソートされます。
  • 🔢 制限: クエリが返すレコード数を制限します。
  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ ツール: SQLシェルまたはpgAdminで同じクエリを実行してください。

異なる PostgreSQL

SELECT ステートメントを使用してテーブルからデータを取得できます。

構文:

SELECT [column names] FROM [table_name]

ここでは、

  • 列名: 値を取得したい列の名前。
  • から: FROM句は、SELECT文の対象となる1つ以上のソーステーブルを定義します。
  • テーブル名: クエリを実行したい既存のテーブルの名前。

特徴的なのは PostgreSQL?

その DISTINCT 条項 PostgreSQL SELECT ステートメントで使用して、結果セットから重複行を削除します。列に繰り返し値が含まれている場合、SELECT DISTINCT は一意の値のみを返し、ping 重複する項目ごとに1行ずつ表示されます。これは、重複のない、固有の顧客都市や製品カテゴリなどの個別のエントリのリストが必要な場合に便利です。

DISTINCT は、SELECT ステートメントにリストされているすべての列を評価して、行が一意であるかどうかを判断します。 PostgreSQL また、DISTINCT ON も提供されており、指定した式の一意の値ごとに最初の行を返します。DISTINCT は ORDER BY と組み合わせて表示する行を制御したり、LIMIT と組み合わせて結果の数を制限したりできます。

PostgreSQL SQL シェルの Select ステートメント

ステップ1) 「tutorials」というテーブルがあり、「id」と「tutorial_name」という2つの列があります。このテーブルをクエリしてみましょう。次のクエリを使用して、テーブル内のデータを一覧表示します。

SELECT id,tutorial_name FROM tutorials;

PostgreSQL SQL シェルの Select ステートメント

注: コマンド「\c」を使用して、クエリ対象のテーブルを含むデータベースに接続します。この例では、データベース「guru99」に接続しています。

ステップ2) 特定のテーブル内のすべての列を表示したい場合は、アスタリスク(*)ワイルドカード文字を使用できます。これは、あらゆる可能性をチェックし、結果としてすべての列を返すことを意味します。

SELECT * FROM tutorials;

PostgreSQL SQL シェルの Select ステートメント

チュートリアル テーブルのすべてのレコードが表示されます。

ステップ3) ORDER 句を使用すると、特定の列に基づいてテーブル内のデータを並べ替えることができます。 ORDER 句は、データを A から Z の順序で編成します。

SELECT * FROM tutorials ORDER BY id;

PostgreSQL SQL シェルの Select ステートメント

「ORDER BY」ステートメントの後に「DESC」を使用すると、Z から A までソートできます。

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL SQL シェルの Select ステートメント

ステップ4) SELECT DISTINCT で PostgreSQL 句を使用すると、結果から重複行を削除できます。重複のグループごとに 1 行が保持されます。

Syntax:
SELECT DISTINCT column_1 FROM table_name;

PostgreSQL のテーブルから異なる ID 値を選択するクエリを、異なるクエリを使用して作成してみましょう。 PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL SQL シェルの Select ステートメント

ステップ5) あなたが使用することができます PostgreSQL LIMIT句は、SELECTクエリによって返されるレコード数を制限するために使用されます。

SELECT * FROM tutorials LIMIT 4;

PostgreSQL SQL シェルの Select ステートメント

PostgreSQL pgAdmin の SELECT ステートメント

ステップ1) オブジェクトツリー内:

  1. テーブルを右クリックします。
  2. スクリプトを選択してください。
  3. 「スクリプトを選択」をクリックしてください。

PostgreSQL pgAdmin の SELECT ステートメント

ステップ2) 右側のパネル:

  1. 必要に応じてSELECTクエリを編集してください。
  2. 稲妻のアイコンをクリックしてください。
  3. 出力結果を確認してください。

PostgreSQL pgAdmin の SELECT ステートメント

複数の列に対して重複を除外する

SELECT DISTINCT 句は、複数の列にも適用できます。DISTINCT の後に複数の列を指定すると、 PostgreSQL これらの列の組み合わせを一つの単位として扱い、その組み合わせ全体が重複している行を削除します。

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

例えば、tutorials テーブルから tutorial_name と id の一意の組み合わせを返すには、次のようにします。

SELECT DISTINCT tutorial_name, id FROM tutorials;

この場合、行はtutorial_nameとidの両方が別の行と一致する場合にのみ削除されます。2つの行が同じtutorial_nameを持ちながらidの値が異なる場合、組み合わせは一意であるため、両方とも保持されます。この動作は重要です。DISTINCTは、複数の列が選択されている場合、単一の列の重複を削除するのではなく、選択された列全体をまとめて重複削除します。

DISTINCTとGROUP BYの違い PostgreSQL

DISTINCTとGROUP BYはどちらも重複値を削除できますが、それぞれ異なる目的で使用されます。

  • DISTINCT 結果から重複のない行だけを返すため、重複のないリストだけが必要な場合に最適です。
  • グループ化 同じ値を持つ行をグループ化して、COUNT、SUM、または集計関数を適用できるようにします。 AVG 各グループへ。

例えば、以下の2つのクエリはどちらも一意のID値を返します。

SELECT DISTINCT id FROM tutorials;
SELECT id FROM tutorials GROUP BY id;

一意の値のリストを作成する場合は DISTINCT を使用し、グループごとに計算が必要な場合(例えば、各 ID を共有するチュートリアルの数を数える場合など)は GROUP BY を使用してください。単純なクエリでは、プランナーは多くの場合、どちらの方法でも同様のパフォーマンスを発揮しますが、集計処理が必要な場合は GROUP BY が必要です。

チートシート

SELECT [column names] FROM [table_name] [clause]

以下に様々なパラメータを示します。

  • 列名: 値を取得したい列の名前。
  • から: FROM句は、SELECT文の対象となる1つ以上のソーステーブルを定義します。
  • テーブル名: クエリを実行したい既存のテーブルの名前。

さまざまな条項は次のとおりです。

コマンド 詳細説明
* テーブル内のすべての行のレコードを取得します。
DISTINCT 異なる PostgreSQL 結果から重複を削除するのに役立ちます。
ORDER BY 行を列に基づいて並べ替えます。デフォルトの並べ替え順序は昇順です。降順で並べ替えるには、キーワードDESCを使用します。
LIMIT 制限 PostgreSQL クエリによって返されるレコードの数を制限します。

よくあるご質問

はい。AIアシスタントは、説明文をSELECT DISTINCT文に変換し、ORDER BY句やLIMIT句を追加して、結果を説明できます。ただし、本番環境で実行する前に、スキーマ上でクエリをテストすることをお勧めします。

はい。AIツールはEXPLAIN ANALYZEのクエリプランを読み取り、インデックスの提案やDISTINCTをGROUP BYに書き換える提案を行うことができます。ただし、パフォーマンスはテーブルサイズやインデックスに依存するため、提案内容は必ず実際のデータで検証してください。

DISTINCT は、選択したすべての列から重複する行を削除します。DISTINCT ON (式) は、その式の一意の値ごとに最初の行を保持するため、グループごとに 1 行を選択できます。通常は ORDER BY と組み合わせて使用​​します。

DISTINCT は、重複を比較して削除する必要があるため、大規模なテーブルでは処理速度が低下する可能性があります。多くの場合、ソートやハッシュが使用されます。適切なインデックスを作成し、選択する列を制限することで、処理コストを削減できます。