メインコンテンツまでスキップ
メインコンテンツまでスキップ

EXCEPT句

EXCEPT句は、最初のクエリの結果から2番目のクエリを除いた行のみを返します。

  • 両方のクエリは同じ数のカラムを同じ順序とデータ型で持つ必要があります。
  • EXCEPTの結果には重複行が含まれる可能性があります。重複が望ましくない場合はEXCEPT DISTINCTを使用してください。
  • 括弧が指定されていない場合、複数のEXCEPT文は左から右に実行されます。
  • EXCEPT演算子は、UNION句と同じ優先度を持ち、INTERSECT句よりも低い優先度です。

構文

条件は、要件に基づく任意の式で設定できます。

さらに、EXCEPT()を使用して同じテーブルの結果からカラムを除外することができます。これはBigQuery(Google Cloud)で可能な構文です:

このセクションの例は、EXCEPT句の使用法を示しています。

EXCEPT句を使用した数字のフィルタリング

こちらは、数字3から8の数字が含まれない1から10の数字を返すシンプルな例です:

クエリ:

結果:

EXCEPT()を使用した特定のカラムの除外

EXCEPT()を使用して結果からカラムを迅速に除外することができます。たとえば、以下の例のように、いくつかのカラムを除外してテーブルからすべてのカラムを選択したいとします:

クエリ:

結果:

暗号通貨データとともにEXCEPTおよびINTERSECTを使用する

EXCEPTINTERSECTは、異なるブール論理で相互に使用されることが多く、共通のカラム(またはカラム)のある2つのテーブルがある場合にどちらも役立ちます。 たとえば、取引価格と取引量を含む歴史的な暗号通貨データが数百万行あるとしましょう:

クエリ:

結果:

次に、私たちが保有している暗号通貨のリストとそれぞれのコイン枚数を含むholdingsという名前のテーブルがあるとしましょう:

EXCEPTを使用して「私たちの所有するコインで$10未満で取引されたことがないのはどれか?」という質問に答えることができます:

結果:

これは、私たちが所有する4つの暗号通貨のうち、Bitcoinだけが$10を下回ったことがないことを示しています(この例で示される限られたデータに基づいています)。

EXCEPT DISTINCTを使用する

以前のクエリでは、結果に複数のBitcoinの保有がありました。EXCEPTDISTINCTを追加して、結果から重複行を排除することができます:

結果:

参照