SQL ServerのEXCEPT演算子とは?構文と使い方を実例付きで解説
SQL ServerのEXCEPT演算子は、1つ目のSELECT文から返される行のうち、2つ目のSELECT文では返されない行を取得するために使用されます。各SELECT文はそれぞれデータセットを持ち、EXCEPT演算子は1つ目のデータセットからレコードを取得した後、2つ目のデータセットに存在する結果を除外します。
EXCEPTクエリのイメージ

EXCEPTクエリの概念図
説明: EXCEPTクエリは、図の青色の領域にあたるレコード、つまり「データセット1には存在するが、データセット2には存在しない」レコードのみを返します。
また、EXCEPTクエリ内の各SELECT文は、結果セットにおけるフィールド数が同じであり、かつ対応する列のデータ型も一致している必要があります。
EXCEPT演算子の構文
SELECT 式1, 式2, … 式n
FROM テーブル名
[WHERE 条件式]
EXCEPT
SELECT 式1, 式2, … 式n
FROM テーブル名
[WHERE 条件式];
パラメータの説明
式(bieu_thuc)
SELECT文間で比較したい列または値のことです。各SELECT文で同じ列である必要はありませんが、対応する列同士は同じデータ型である必要があります。
テーブル(bang)
レコードを取得したいテーブルです。FROM句には必ず1つ以上のテーブルを指定する必要があります。
WHERE 条件式
省略可能な項目です。抽出対象のレコードが満たすべき条件を指定します。
注意点:
- 2つのSELECT文は、同じ数の式を含む必要があります。
- 各SELECT文の対応する列は、同じデータ型である必要があります。
- EXCEPT演算子は、「1つ目のSELECT文には含まれるが、2つ目のSELECT文には含まれない」すべてのレコードを返します。
- SQL ServerのEXCEPT演算子は、OracleのMINUS演算子に相当します。
例1:単一の式を使用する場合
SELECT sanpham_id
FROM sanpham
EXCEPT
SELECT sanpham_id
FROM hangtonkho;
このEXCEPT演算子の例では、sanpham(商品)テーブルに存在し、hangtonkho(在庫)テーブルには存在しない、すべてのsanpham_id値が返されます。つまり、両方のテーブルに共通して存在するsanpham_id値は、結果から除外されます。
例2:複数の式を使用する場合
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
EXCEPT
SELECT nhanvien_id, ho, ten
FROM nhanvien;
この例では、danhba(連絡先)テーブルのうち、連絡先ID・姓・名の組み合わせが、nhanvien(従業員)テーブルの従業員ID・姓・名と一致しないレコードが返されます。
例3:ORDER BY句を使用する場合
SELECT nhacung_id, nhacung_ten
FROM nhacung
WHERE bang = 'Florida'
EXCEPT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_id <= 400
ORDER BY 2;
この例では、2つのSELECT文間で列名が異なるため、ORDER BY句で結果セット内の位置を指定して列を参照すると便利です。上記の例では「ORDER BY 2」と指定することで、nhacung_ten / congty_ten(結果セットの2番目の列)を基準に、結果を昇順で並べ替えています。
これは、nhacung_ten / congty_tenが結果セットの2番目の列に位置しているためです。
-
SQL ServerのINTERSECT演算子とは?構文と使い方を実例付きで解説
SQL Server(Transact-SQL)における INTERSECT演算子 は、2つのデータセット(SELECT文)の両方に共通して存在するレコードだけを返すために使用されます。片方のクエリにのみ存在し、もう片方には存在しないレコードは、INTERSECTの結果セットから自動的に除外されます。 INTERSECTクエリのイメージ INTERSECTクエリが返す結果のイメージ図 図の説明: INTERSECTクエリは、ベン図の中央にある青く塗りつぶされた領域のレコードを返します。これらは dataset1 と dataset2 の両方に存在するレコードです。 なお、INTERSECT内
-
MS SQL Serverでデータベースを選択する2つの基本方法
MS SQL Serverで操作対象となるデータベースを選択するには、主に以下の2つの方法があります。GUI操作とコマンド操作それぞれの特徴を理解し、状況に応じて使い分けることで、作業効率を高めることができます。 方法1:SQL Server Management Studio(SSMS)を使用する 視覚的に操作したい方には、SQL Server Management Studio(SSMS)を使った方法がおすすめです。 例として、msdbという名前のデータベース上でバックアップ履歴を参照するクエリを実行したい場合、ツールバーのドロップダウンリストからmsdbを選択します。 データベースのバッ