-3

ques1。sqlのwhere句は集計関数(sum、avg、max、min)では使用できませんか?

ques2。列を含むcustという名前のテーブルを検討します:orderno、custid、cost

select * from cust having cost> avg(cost)

avg(cost)は出力5695を提供します。したがって、コストが5695を超えるため、3つのレコードが出力に含まれるはずです。ただし、1つだけが出力されます。一方、このクエリ:

select * from cust having cost>(select avg(cost) from cust)なぜ正しい出力を与えるのですか?

4

1 に答える 1

2
  1. いいえ、使用しますHAVING
  2. MySQLはSQLを適切に実装せず、暗黙的に実装するためGROUP BY
  3. それはほとんど正しいクエリだからです(2を参照)。そのはず

    select * from cust where cost>(select avg(cost) from cust)

于 2012-09-20T13:15:46.213 に答える