EXCEPT句
EXCEPT
句は、最初のクエリの結果から2番目のクエリを除いた行のみを返します。
- 両方のクエリは同じ数のカラムを同じ順序とデータ型で持つ必要があります。
EXCEPT
の結果には重複行が含まれる可能性があります。重複が望ましくない場合はEXCEPT DISTINCT
を使用してください。- 括弧が指定されていない場合、複数の
EXCEPT
文は左から右に実行されます。 EXCEPT
演算子は、UNION
句と同じ優先度を持ち、INTERSECT
句よりも低い優先度です。
構文
条件は、要件に基づく任意の式で設定できます。
さらに、EXCEPT()
を使用して同じテーブルの結果からカラムを除外することができます。これはBigQuery(Google Cloud)で可能な構文です:
例
このセクションの例は、EXCEPT
句の使用法を示しています。
EXCEPT
句を使用した数字のフィルタリング
こちらは、数字3から8の数字が含まれない1から10の数字を返すシンプルな例です:
クエリ:
結果:
EXCEPT()
を使用した特定のカラムの除外
EXCEPT()
を使用して結果からカラムを迅速に除外することができます。たとえば、以下の例のように、いくつかのカラムを除外してテーブルからすべてのカラムを選択したいとします:
クエリ:
結果:
暗号通貨データとともにEXCEPT
およびINTERSECT
を使用する
EXCEPT
とINTERSECT
は、異なるブール論理で相互に使用されることが多く、共通のカラム(またはカラム)のある2つのテーブルがある場合にどちらも役立ちます。
たとえば、取引価格と取引量を含む歴史的な暗号通貨データが数百万行あるとしましょう:
クエリ:
結果:
次に、私たちが保有している暗号通貨のリストとそれぞれのコイン枚数を含むholdings
という名前のテーブルがあるとしましょう:
EXCEPT
を使用して「私たちの所有するコインで$10未満で取引されたことがないのはどれか?」という質問に答えることができます:
結果:
これは、私たちが所有する4つの暗号通貨のうち、Bitcoinだけが$10を下回ったことがないことを示しています(この例で示される限られたデータに基づいています)。
EXCEPT DISTINCT
を使用する
以前のクエリでは、結果に複数のBitcoinの保有がありました。EXCEPT
にDISTINCT
を追加して、結果から重複行を排除することができます:
結果:
参照