1

次のようなクエリを実行しようとしています。

SELECT MAX(counter), MIN(counter) ,
       my_date IN (SELECT my_date FROM my_table WHERE counter = MAX(counter) )  AS max_Date ,
       my_date IN (SELECT my_date FROM my_table WHERE counter = MIN(counter) ) AS min_Date 
FROM my_table;

「グループ関数の無効な使用」エラーが表示されます。私がやりたいことは、最大カウンターの日付を見つけてから、最小カウンターの日付を見つけることです。どんな助けでも!! 本当に感謝しています..ありがとう。

4

3 に答える 3

2

集計関数 (max()/min()) の結果を行ごとに使用しようとしていますが、DB がテーブル全体をスキャンするまで、これらの結果は利用できません。

たとえば、ニワトリが先か卵が先かの問題です。ニワトリを数える必要がありますが、ニワトリを生み出す卵はまだ産まれていません。

そのためHAVING、集計関数の結果を使用してフィルタリングを行うことができる句があります。

サブクエリでこれを試してください:

SELECT my_date FROM my_table HAVING counter = MIN(counter) 
                             ^^^^^^
于 2013-06-19T15:35:28.397 に答える
1

group_concat()とのトリックを使用して、最大および最小のカウンター値が表示される日付を取得できますsubstring_index()

SELECT MAX(counter), MIN(counter) ,
       substring_index(group_concat(my_date order by counter desc), ',', 1) as max_date,
       substring_index(group_concat(my_date order by counter), ',', 1) as min_date
FROM my_table;

注: 最初に日付を好みに合わせてフォーマットすることをお勧めします。

結合を使用してこれを行うこともできます。

クエリの問題は次のとおりです。

where counter = min(counter)

whereどちらもサブクエリ内のテーブルを参照しているため、句に集計関数を含めることはできません。エイリアスを使用してこれを行うこともできますが、わざわざする必要はありません。クエリを記述する方法は他にもあります。

于 2013-06-19T15:38:49.677 に答える