ホームページ >データベース >mysql チュートリアル >WHERE と HAVING: 集約データを検索するために各句をいつ使用する必要がありますか?

WHERE と HAVING: 集約データを検索するために各句をいつ使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-21 09:41:07910ブラウズ

WHERE vs. HAVING: When Should You Use Each Clause to Find Aggregated Data?

SQL: HAVING と WHERE – 集約データのフィルタリング

この記事では、SQL の WHERE 句と HAVING 句の主な違いを、特に集計データを操作する場合に説明します。 最も専門性の高い講師を見つける例を使用します。 WHERE 句だけではこのタスクには不十分です。 HAVING 句が必要です。

違いを理解する

WHERE 句は、グループ化が行われるに個々の行をフィルタリングします。 テーブル内の個々のレコードに条件を適用します。 逆に、HAVING 句はグループ化の をフィルタリングし、COUNTSUMAVGMIN などの集計関数を操作します。 これは、講師の専門分野の例のように、集計の結果に基づいてフィルタリングする場合に重要です。

ベストプラクティス

明確さと効率性を高めるため、一般的なルールは WHERE の前に GROUP BY を使用し、HAVING の後に GROUP BY を使用することです。このアプローチにより、クエリの構築が簡素化され、読みやすさが向上します。

最適化されたクエリ

次のクエリは、ANSI 結合と HAVING 句を使用して、最大数の専門分野を持つ講師を効率的に識別します。

<code class="language-sql">SELECT  L.LectID, Fname, Lname
FROM Lecturers L
JOIN Lecturers_Specialization S ON L.LectID = S.LectID
GROUP BY L.LectID, Fname, Lname
HAVING COUNT(S.Expertise) >= ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID)</code>

この改訂されたクエリにより、theta 結合条件として WHERE 句が不要になり、より合理化された効率的なクエリが実現します。

以上がWHERE と HAVING: 集約データを検索するために各句をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。