ホームページ  >  記事  >  データベース  >  SQLステートメントのwhereとhaveの違いを理解する

SQLステートメントのwhereとhaveの違いを理解する

怪我咯
怪我咯オリジナル
2017-03-31 10:07:142176ブラウズ

HAVING は最初に をグループ化してからレコードをフィルタリングしますが、WHERE を集約する前にレコードをフィルタリングします。つまり、GROUP BY 句と HAVING 句の前に動作し、HAVING 句は集計後にグループ レコードをフィルタリングします。 動作する
オブジェクト が異なります。 WHERE 句はテーブルとビューに対して機能し、HAVING 句はグループに対して機能します。 WHERE はグループ化と集計計算の前に入力行を選択します (したがって、どの行が集計計算に入るかを制御します)。一方、HAVING はグループ化と集計の後にグループ化された行を選択します。したがって、どの行が集計操作に入力されるかを決定するために集計関数を使用することは無意味であるため、WHERE 句に集計関数 を含めることはできません。 対照的に、HAVING 句には常に集計関数が含まれます。 (厳密に言えば、集計を使用せずに HAVING 句を記述することもできますが、それは時間の無駄です。同じ条件を WHERE ステージでより効率的に使用できます。) 例: select * from tablename where id > 1 ; query
の結果と
select * from tablename using id > 1
の間に違いはありません。使用することはお勧めできません 2 つの文にまとめると、次のようになります。 WHERE ステートメントは GROUPBY ステートメントの前にあります。SQL はグループ化する前に WHERE ステートメントを計算します。
HAVING ステートメントは GROUPBY ステートメントの後にあり、SQL はグループ化の後に HAVING ステートメントを計算します。

以上がSQLステートメントのwhereとhaveの違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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