ホームページ > データベース > mysql チュートリアル > GROUP BY 標準 SQL を使用せずに HAVING を使用することはできますか?

GROUP BY 標準 SQL を使用せずに HAVING を使用することはできますか?

DDD
リリース: 2024-12-31 00:12:26
オリジナル
177 人が閲覧しました

Is Using HAVING Without GROUP BY Standard SQL?

GROUP BY なしの HAVING: 標準 SQL 準拠

質問に示されているクエリ構造:

SELECT *
FROM Book
HAVING NumberOfPages = MAX(NumberOfPages)
ログイン後にコピー

標準 SQL に従った有効性に関する懸念。クエリでは、対応する GROUP BY 句のない HAVING 句が使用されています。

標準 SQL では、検索条件が特定の基準を満たす場合に HAVING 句が有効であると定義されています。これらの基準には、GROUP BY 句で参照される列に機能的に依存していること、または外部参照であることが含まれます。

指定されたクエリには GROUP BY 句がありません。したがって、特定のグループに対する NumberOfPages の明確な機能依存関係がないため、検索条件 NumberOfPages = MAX(NumberOfPages) は定義された基準を満たしません。

標準に準拠するには、クエリを次のようにする必要があります。次のような GROUP BY 句を含めるように変更されました。

SELECT *
FROM Book
GROUP BY BookId
HAVING NumberOfPages = MAX(NumberOfPages)
ログイン後にコピー

この改訂されたクエリでは、GROUP BY 句が使用されます。 BookId ごとにデータを分割し、書籍ごとに個別のグループを作成します。 HAVING 句は、これらのグループに対して動作し、グループに最大 NumberOfPages の行が含まれているかどうかをチェックするため、有効になります。

MySQL などの一部のデータベース システムでは、このようなクエリを許可しない場合があることに注意することが重要です。 GROUP BY 句ですが、この動作は非標準の拡張とみなされます。

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

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