0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLのHAVINGについて①

Posted at

前回、SQLについての記事を書いたので、今回も引き続きSQLについて書こうと思います。
今回はHAVINGについて説明します。
個人的にはあんまり使う機会がないのですが、けっこう頻繁に使い方を忘れてしまうので……。
使用するテーブルは以下の通りです。

name class
鈴木 Aクラス
田中 Aクラス
山田 Bクラス
佐藤 Bクラス
渡辺 Bクラス
中村 Cクラス

まずはHAVINGのみを単体で使用します。

SQL
SELECT name, class from TABLE1 HAVING class = 'Aクラス';

すると、以下のような結果が抽出されます。

name class
鈴木 Aクラス
田中 Aクラス

お察しの通り、WHEREとまったく同じ動きをします。
少しややこしいのですが、HAVINGとWHEREは呼び出されるタイミングが違って、そこによって使い分けます。
WHEREはGROUP BYされる前の段階の抽出条件を指定する句であり、HAVINGはGROUP BYが適用された後の抽出条件を指定する句になっています。
逆に言えば、GROUP BYが使用されていないSQLの中ではWHEREとHAVINGは全く同じ動きをするわけです。
そんな事情で、HAVINGはほとんどの場合、GROUP BYと一緒に使用されることになります。
次回は実際にどのような動きをするのかを説明したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?