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 サイトの他の関連記事を参照してください。