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

实际上你必须明白这 select distinct count(b), a意味着 DISTINCT ofcount(b), a而不仅仅是 count(b)

这就是为什么第二个不起作用的原因,您不能在列的子集上具有 distinct。

更多地理解它:当行的所有值都相同时,DISTINCT 给出一行,如果你想在 just 上执行count(b),并且 2 行具有相同的值,应该显示count(b)哪个值?a

这就是为什么在列的子集上不可能有不同的原因

要为我不确定的每个值count(b)和任何值获取一个值,但您可以尝试以下操作: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 回答