2013-07-04 2 views
9

Это мой стол:Использование COUNT в GROUP_CONCAT

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 или SUM не могут использоваться в GROUP_CONCAT. Если да, то знаете ли вы другой способ сделать это.

+0

Почему ты хочу это? Что будет дальше? – Strawberry

ответ

8

Вы должны COUNT() с GROUP BY во внутреннем выберите первую, а затем применить GROUP_CONCAT()

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

Выход:

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

Вот SQLFiddle демо

+0

Большое спасибо, я потратил много времени, чтобы исправить это. К сожалению, у меня недостаточно времени для игры, поэтому мне нужна помощь, даже если этот результат выглядит так просто. – mesnicka

+0

@mesnicka Добро пожаловать. Я рад, что смог помочь :) – peterm

+0

Обратите внимание, что это в настоящее время зависит от того, что числа fk_company упорядочены последовательно, таким образом, который соответствует id – Strawberry

0
select GROUP_CONCAT(counts) 
    from (
     select count(id) counts from 
      table group by fk_company 
    ); 
Смежные вопросы