14

これは私のテーブルです:

  id  | fk_company
-------------------
  1   |     2    
  2   |     2    
  3   |     2    
  4   |     4    
  5   |     4    
  6   |     11   
  7   |     11   
  8   |     11   
  9   |     12

必要な結果は、文字列 "3, 2, 3, 1" (各会社に属するアイテムの数) になるはずです。これは、複雑なクエリ文字列の一部にすぎないためです。

私はこのクエリを使用しようとしました:

SELECT GROUP_CONCAT(COUNT(id) SEPARATOR ", ")
FROM `table` GROUP BY fk_company;

しかし、エラーが発生しました:

エラー番号: 1111
グループ機能の不正な使用

COUNT、 、MAXでは使えないMIN感じがあります。もしそうなら、これを行う別の方法を知っていますか?SUMGROUP_CONCAT

4

4 に答える 4

17

最初に内側の句を使用してから適用COUNT()する必要があります。GROUP BYSELECTGROUP_CONCAT()

SELECT GROUP_CONCAT(cnt) cnt
FROM (
    SELECT COUNT(*) cnt
    FROM table1
    GROUP BY fk_company
) q;

出力:

| | CNT |
-----------
| | 3,2,3,1 |

これがSQLFiddle のデモです。

于 2013-07-04T06:27:58.413 に答える
0
select GROUP_CONCAT(counts) 
   from (
      select count(id) counts from
          table group by fk_company
   );
于 2013-07-04T06:26:48.013 に答える