CONCAT () внутри GROUP_CONCAT () с количеством - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь получить результаты с функциями group_concat, concat и count в MySQL, но это дает мне ошибку. вот мой столик

enter image description here

Во-первых, когда я пытаюсь получить счет и статус с помощью concat, он работает нормально.

$query="SELECT CONCAT(`status`,':',count(status)) FROM `mytable` GROUP BY status"

вывод:
Hold: 2
Выполнено: 3
Отменено: 2

Пока все хорошо. Теперь я хочу этот вывод в один ряд. Поэтому я попытался использовать GROUP_CONCAT ().

$query="SELECT GROUP_CONCAT(CONCAT(`status`,':',count(status)) SEPARATOR ',') as rowString FROM `mytable` GROUP BY status"

но теперь выдает ошибку «Неправильное использование групповых функций»

Примечание: тот же запрос работает, если я заменяю count (status) другим полем из таблицы (без count). Функция count() вызывает некоторые проблемы при использовании таким образом.

Желаемый выход

Удерживать: 2, Выполнил: 3, Отменено: 2

Ценю вашу помощь.

1 Ответ

0 голосов
/ 20 января 2019

Вы не можете вложить функции агрегирования (count() в аргументах group_conat()). Одним из решений является выбор из вложенного подзапроса.

SELECT group_concat(status, ':', count SEPARATOR ',') rowstring
       FROM (SELECT status,
                    count(*) count
                    FROM mytable
                    GROUP BY status) x;
...