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

EXCEPT 句

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

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

構文

条件は、要件に基づいた任意の式にすることができます。

さらに、 EXCEPT() を使用して、ビッグクエリ(Google Cloud)と同様に、同じテーブルの結果からカラムを除外することもできます。次の構文を使用します。

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

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

こちらは、数字の 1 から 10 の中で、数字の 3 から 8 に含まれないものを返す簡単な例です。

クエリ:

結果:

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

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

クエリ:

結果:

暗号通貨データを使用した EXCEPTINTERSECT の利用

EXCEPTINTERSECT は異なるブール論理を用いた場合に互換性があることが多く、共通のカラム(またはカラム群)を持つ 2 つのテーブルがある場合に両方とも有用です。 例えば、数百万行の過去の暗号通貨データがあり、取引価格とボリュームを含むとしましょう。

クエリ:

結果:

今、私たちが保有する暗号通貨のリストとコインの数を含む holdings というテーブルがあるとしましょう:

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

結果:

これは、私たちが保有する4つの暗号通貨の中で、ビットコインだけが $10 未満に下がったことがないことを意味します(ここでの限られたデータに基づいた例です)。

EXCEPT DISTINCT の使用

前のクエリでは、結果にビットコインの重複保有がありました。 EXCEPTDISTINCT を追加して、結果から重複行を排除できます:

結果:

参照