【SQL Server】DISTINCT句の使い方を徹底解説!重複データを削除して一意な値を取得する方法
SQL ServerのDISTINCT句とは
SQL Server(Transact-SQL)におけるDISTINCT句は、検索結果セットから重複する行を取り除き、一意な値のみを取得するために使用します。DISTINCT句を使用できるのはSELECT文のみであり、INSERTやUPDATEなど他のステートメントでは利用できない点に注意してください。
DISTINCT句の基本構文
SELECT DISTINCT 式
FROM テーブル名
[WHERE 条件];
各パラメータの意味
式(expression)
取得したい列、または計算結果の値を指定します。
テーブル(table)
レコードを取得する対象のテーブルです。FROM句には必ず1つ以上のテーブルを指定する必要があります。
WHERE 条件
省略可能な項目です。取得対象となるレコードが満たすべき条件を指定します。
DISTINCT句を使う際の注意点
- DISTINCT句の後に式が1つだけ指定された場合、クエリはその式の一意な値を返します。
- DISTINCT句の後に複数の式が指定された場合、クエリはそれらの式の組み合わせが一意となる行を返します。
また、SQL ServerのDISTINCT句はNULL値を無視しません。そのため、この句を使用したクエリを実行すると、結果セットには一意なNULL値も含まれる点に留意しておきましょう。
実行例①:式が1つの場合
DISTINCT句の最もシンプルな使い方は、式を1つだけ指定するケースです。
SELECT DISTINCT sei
FROM shain
WHERE shain_id >= 50;
この例では、社員ID(shain_id)が50以上のレコードを対象に、社員テーブル(shain)から「姓(sei)」の値を重複なくすべて取得します。
実行例②:式が複数の場合
SELECT DISTINCT mei, sei
FROM shain
WHERE shain_id >= 50
ORDER BY sei;
この例では、社員IDが50以上のレコードから「名(mei)」と「姓(sei)」の組み合わせを取得し、結果は姓の昇順にソートされます。
ここで重要なのは、DISTINCTがキーワードの後ろに続くすべてのフィールドに対して適用されるという点です。つまり、姓が同じでも名が異なる場合は別々の行として扱われ、両方の行が結果に含まれます。「名前と名字の組み合わせ全体」が一意であるかどうかが判定基準になることを覚えておきましょう。
-
SQL ServerのPIVOT句とは?クロス集計で行を列に変換する方法を実例付きで解説
SQL Server(Transact-SQL)では、PIVOT句を使用することで、クロス集計(ピボットテーブル)を作成できます。PIVOT句は、テーブル内の行データを列に変換し、集計結果を見やすい形式で表示するための強力な機能です。 下図は、合計値を計算し、行データを列に変換して表示する例です。 PIVOT句の基本構文 SELECT cot_dautien AS bidanh_cot_dautien, [giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n] FROM ( SELECT bang_nguon.cot1
-
MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説
SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ