目次
1.where句で集計関数が使えない
2.whereとhavingの違い
3.EXIST演算子
4.existとjoinの使い分け
1. where句で集計関数が使えない
- 絞り込み条件に集計関数(count/sum/max)を使いたい場合はhavingを利用する
2.whereとhavingの違い
- 呼ばれるタイミングが違う
- from
- where
- groupby
- having
- select
- orderby
- where
- グループをされる前の段階、つまり元々のデータでの抽出条件を指定できる
- having
- グループ化した後の情報での、抽出条件を指定できる。
3. EXIST演算子(句)問合せ
- 書き方
- exists(サブクエリ)
- not exists(サブクエリ)
- 例
select * from products where exists (select id from sale)
4. existとjoinの使い分け
-
結論
- 別テーブルの情報を出力対象にしたい場合はJOIN
- 別テーブルの情報を抽出条件に使用するだけの場合はEXISTS
-
EXISTS
- あくまでレコードが存在するかの条件なのでサブクエリで出力するカラムはなんでも良いのですね
使い分けの疑問
JOINでも、出力しなかったらEXISTSと同じでは?
-
結論
- 結合元と結合先のテーブルが1:1の場合に限る
- 1 : N の関係ですと結合先のレコードが重複して出力されるがDISTINCTでまとめれる
- だが、処理速度がかかるため、集計データなどの大量のデータを出力したい場合ですと、無視できない時間になってしまいます。
-
恥ずかしいですが・・
業務中に調べてことを振り返っていたのですが、
本当に基本的な知識が抜けているのだなぁと感じております。。
継続して知識を付けていきます