1

私は動作する次のコードを持っています:

   select distinct count(b), a from test group by a order by count(b) DESC limit 10;

しかし、実際には出力に a, count(b) を代わりに表示したいと思います(順序を切り替えます)。不運にも

   select a, distinct count(b) from test group by a order by count(b) DESC limit 10;

動作しません。私が知っている小さな質問です。別のプログラムで順序を変更し続けるのは面倒です。

4

1 に答える 1

3

実際には、count(b) だけでなく、select distinct count(b), aDISTINCTを意味することを理解する必要があり ます。count(b), a

そのため、2 番目の方法は機能しません。列のサブセットに個別の値を指定することはできません。

もっと理解するには: DISTINCTは、行のすべての値がcount(b)同じ場合に 1 つの行を与えます。count(b)a

これが、列のサブセットで個別にすることが不可能な理由です

の各値count(b)と任意の値に対して1つの値を取得するには、a わかりませんが、これを試すことができます:

select max(a) from (select distinct count(b) from test group by a order by count(b) DESC ) GROUP BY count(b)

于 2013-04-27T22:46:06.433 に答える