SQL の WHERE 句と HAVING 句の違い: 包括的な概要
SQL の世界では、WHERE 句と HAVING 句がデータのフィルタリングと選択において重要な役割を果たします。ただし、これら 2 つの条項の間には、しばしば混乱を招く決定的な違いがあります。この曖昧さを解消するために、WHERE と HAVING の違いを調べてみましょう。
どこにあるのか: 比喩
スーパーマーケットでリンゴを買いたいと想像してください。 WHERE 句は、最初の選択を絞り込むための条件を設定する店舗への入り口にたとえることができます。たとえば、WHERE Color = 'Green' と指定すると、緑色のリンゴのみが考慮されます。
対照的に、HAVING 句は、リンゴを収穫した後に行う品質管理チェックのようなものです。 HAVING Count(Apples) > 10 を指定すると、選択したリンゴの数が 10 個を超えていることが確認できます。
主な違い: 集計
WHERE と HAVING の基本的な違いは、集約関数との関係です。 WHERE は集計前に動作しますが、HAVING は集計後に動作します。
集計の例
次のクエリを考えてみましょう:
<code class="language-sql">SELECT City, COUNT(1) AS TotalAddresses FROM Address WHERE State = 'MA' GROUP BY City HAVING COUNT(1) > 5</code>
この場合、WHERE は都市ごとにグループ化する前に、行を State = 'MA' の行に制限します。次に、HAVING は、各都市に 5 つ以上の住所があるかどうかを確認します。したがって、クエリでは、住所が 5 つを超えるマサチューセッツ州の都市が返されます。
WHERE と HAVING が重なる場所
GROUP BY が使用されていない場合、HAVING は WHERE のように動作します。次の例に示すように、これは混乱を招く可能性があります:
<code class="language-sql">SELECT City, COUNT(1) AS TotalAddresses FROM Address WHERE State = 'MA' HAVING COUNT(1) > 5</code>
GROUP BY を使用しない場合、HAVING は WHERE 句のように動作し、住所が 5 つ以下のマサチューセッツ州の都市を結果セットから除外します。
結論
効果的な SQL クエリを作成するには、WHERE と HAVING の違いを理解することが重要です。これらの句を適切に適用すると、データの選択を絞り込み、複雑なデータ分析を実行できます。 WHERE は集計前に動作するのに対し、HAVING は集計が行われた後に条件をチェックすることに注意してください。
以上がSQL における WHERE と HAVING: 主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。