SQLにおけるwhereとhavingの違いについて解説します
コンセプト
どこ
where は、クエリの結果が返される前と、結果が返される前にデータベース内のクエリ条件を制約する制約文であり、where の後に "集約関数"を続けることはできません。
集計関数
値のグループに対して計算を行い、単一の値を返すことはグループ関数とも呼ばれ、SELECT文のGROUP BY句でHAVINGと一緒によく使われます。例えば
AVG は指定したグループの平均値を返します COUNT は指定したグループの項目数を返します MAX は指定したデータの最大値を返します MIN は指定したデータの最小値を返します SUM は指定したデータの合計を返します数値列でのみ使用でき、NULL 値は無視されます。
有
having は、クエリデータベースの結果が返された後にフィルタリングを行う、つまり、結果の戻り値の後で動作するフィルタ文であり、集約関数と組み合わせて使用されます。
差別化
フィルタリングに group by を使用すると、having しか使用できません。
実行順序:where>aggregates(sum,min,max,avg,count)>havingなので、whereでは集約を使用しない。
例として
スタッフテーブル
1. 8より大きい点数は何点ですか?
whereを使用する
持つを使う
havingがフィルタリングしているため、エラーが報告されていますが、フィルタにemployee_scoreの値がないため、エラーが報告されています、追加すれば、わかりますよ。
そのため、whereとhavingは、主にフィルタリング対象の違いから、自由に代用できないことが多い。
2. 年齢> 20の各部門の最高得点と最低得点を教えてください。
Whereを使うのも効果的
ただし、実行の順番に注意が必要
注意事項
SQL文を書くときは、whereとgroup byの実行順序に注意してください。whereは前に、group byは後に実行しないと、エラーが報告されます。
まとめ
今回の記事は、SQLのwhereとhavingの違いについてです。SQLのwhereとhavingの違いについては、スクリプトハウスの過去記事を検索するか、以下の記事を引き続き閲覧してください。
関連
-
Navicat 15アクティベーションチュートリアル
-
Navicat sqlファイルのインポートとエクスポートを素早く行う方法
-
5分でわかる!データベースのデッドロックのシナリオと解決策
-
Dbeaverを使ったHiveへのリモート接続の詳細方法
-
データベース管理ツール「Navicat」と「DBeaver」を一挙に読む
-
外部キーの関連付けを行う SQL 文の完全な例
-
Navicat Premiumを使用して、データベースのテーブル構造情報をExcelにエクスポートする方法
-
NavicatでMySqlデータベースへの接続が遅い問題
-
navicat トランザクションの自動コミット問題について
-
ユニークSQLの原理と応用を解説
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
データベースシステムの構造詳細説明 3レベルのスキーマ構造
-
Linuxシステム用Navicatアクティベーションチュートリアル
-
Hbaseカラムナーストレージ入門チュートリアル
-
DeepinV20 Mariadbのクイックインストールを詳しくご紹介します。
-
SQL実行エンジンを自作する方法
-
Navicat for Mac システムチュートリアルのインストールと使用方法
-
CentOS 8.2上のCouchDB 3.3データベースを展開する方法
-
データベースのSQLインジェクションの原理と簡単な紹介
-
高額で無料のSQL開発ツール「Beekeeper Studio」解説
-
SQLインジェクションについて詳しく話すいくつかの散在する知識のポイント