ホームページ > データベース > mysql チュートリアル > 標準 SQL では、GROUP BY 句なしで HAVING 句を使用できますか?

標準 SQL では、GROUP BY 句なしで HAVING 句を使用できますか?

Linda Hamilton
リリース: 2025-01-04 03:18:38
オリジナル
1013 人が閲覧しました

Can a HAVING Clause Be Used Without a GROUP BY Clause in Standard SQL?

GROUP BY を使用しない HAVING

SQL 標準によれば、HAVING 句は通常、グループをフィルタリングするために GROUP BY 句と組み合わせて使用​​されます。それらのグループに対して実行された集計計算に基づく行の数。ただし、一部のデータベース システムでは、GROUP BY なしで HAVING 句を使用できます。

質問:

規定に従って、GROUP BY なしで HAVING 句を使用することは可能ですか? SQL標準?

答え:

はい、標準 SQL では GROUP BY を使用せずに HAVING 句を使用できます。ただし、このようなクエリの動作は、使用しているデータベース システムによって異なります。

MySQL の動作:

MySQL では、GROUP BY なしの HAVING 句が許可されます。結果セットの最初の行に集計列の最大値が含まれていることを確認します。この動作は SQL 標準から逸脱しており、通常、HAVING 句が存在する場合には GROUP BY 句が必要です。

SQL 標準の解釈:

SQL 標準では、 HAVING 句は、GROUP BY 句によって生成された結果セットに対して計算された集計に作用します。 GROUP BY 句がないと、HAVING 句がどの行を参照しているかが不明確になります。

したがって、SQL 標準によれば、GROUP BY のない HAVING 句は厳密には有効ではありません。ただし、MySQL などの一部のデータベース システムでは、互換性の理由からこのようなクエリが許可されている場合があります。

有効な標準 SQL の例:

SELECT 'T' AS result
FROM Book
HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
ログイン後にコピー

このクエリは有効な標準 SQL です。異なる冊数の書籍がある場合は、値「T」を含む列を含む 1 つの行を返します。

結論:

特定のシナリオでは GROUP BY なしで HAVING 句を使用すると便利な場合がありますが、そのようなクエリの動作は適切ではないことに注意することが重要です。標準化されており、データベース システムによって異なる場合があります。信頼性の高いデータベース間の互換性を確保するには、集計計算をフィルタリングするときに GROUP BY を HAVING と組み合わせて使用​​することをお勧めします。

以上が標準 SQL では、GROUP BY 句なしで HAVING 句を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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