ホームページ > データベース > mysql チュートリアル > SQL における WHERE と HAVING: 各句をいつ使用するか?

SQL における WHERE と HAVING: 各句をいつ使用するか?

Patricia Arquette
リリース: 2025-01-14 17:26:44
オリジナル
640 人が閲覧しました

WHERE vs. HAVING in SQL: When to Use Each Clause?

SQL の HAVING 句と WHERE 句の違いの詳細な説明

SQL では、HAVING キーワードと WHERE キーワードはデータをフィルタリングするために使用されますが、それらの機能は異なります。どちらも条件付き選択に使用されますが、その適用は GROUP BY 句の有無によって異なります。

WHERE 句

WHERE 句は集計操作の前に実行され、値に基づいて特定の行を選択します。たとえば、次のクエリは 20 歳以上のすべての学生の名前を取得します:

<code class="language-sql">SELECT Name
FROM Students
WHERE Age > 20;</code>
ログイン後にコピー

HAVING 句

対照的に、HAVING 句は集計関数の適用後に実行されます。集計値に基づいて行グループをフィルター処理するため、集計結果を調べる必要があるシナリオで役立ちます。

たとえば、次のクエリは各都市の学生の平均年齢を取得し、結果をフィルタリングして平均年齢が 25 歳を超える都市のみを表示します。

<code class="language-sql">SELECT City, AVG(Age) AS AvgAge
FROM Students
GROUP BY City
HAVING AvgAge > 25;</code>
ログイン後にコピー

主な違い

HAVINGWHERE の基本的な違いは、実行時間です。 WHERE は集計前に行をフィルタリングし、HAVING は集計後にグループをフィルタリングします。これは、HAVING は集計値の条件をチェックするために使用され、WHERE は個々の行値の条件をチェックするために使用されることを意味します。

サンプル データを含む次の表について考えてみましょう:

City Age
Boston 22
Boston 25
New York 28
New York 30
Los Angeles 23
Los Angeles 29

WHERE を使用したクエリ:

<code class="language-sql">SELECT City, COUNT(*) AS Count
FROM Students
WHERE Age > 25;</code>
ログイン後にコピー

出力:

City Count
New York 2

HAVING を使用したクエリ:

<code class="language-sql">SELECT City, COUNT(*) AS Count
FROM Students
GROUP BY City
HAVING COUNT(*) > 1;</code>
ログイン後にコピー

出力:

City Count
Boston 2
New York 2

この例では、WHERE 句は 25 歳以上の学生の数を取得し、HAVING 句は各都市に 1 人以上の学生がいる都市を取得します。

以上がSQL における WHERE と HAVING: 各句をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート