mysql group concat - PullRequest
       19

mysql group concat

1 голос
/ 03 апреля 2011

как я могу сгруппировать concat? вот мой запрос

select t.date, group_concat(count(*)) from table1 t
group by t.date

но возвращает ошибку "Неправильное использование групповой функции"

Если я использую запрос, подобный этому

select t.date, count(*) from table1 t
group by t.date

затем он возвращает следующий вывод, но я хочу, чтобы group_concat это вывод

2011-01-01  100
2011-01-02  97
2011-01-03  105

Ответы [ 3 ]

0 голосов
/ 03 апреля 2011
SELECT GROUP_CONCAT(`cnt` ORDER BY `date`) 
FROM (
    SELECT t.`date`, COUNT(*) AS `cnt`
    FROM `table1` t
    GROUP BY t.`date`
) d
0 голосов
/ 03 апреля 2011

Вы хотите что-то вроде этого:

SELECT GROUP_CONCAT(n) groupN
FROM (SELECT COUNT(*) n
      FROM table1
      GROUP BY date) tmp

Но это не роль СУРБД!Косметика - это роль языка вашего приложения (PHP, Python, Ruby и т. Д.), Ваш запрос должен выбирать только ваши данные, точка.Следовательно, GROUP_CONCAT не является решением в этом случае.

0 голосов
/ 03 апреля 2011

Хотите ли вы подсчитать количество строк даты, сгруппированных по дате?

Я использую этот оператор для подсчета количества элементов счета-фактуры на дату в конкретном месяце.

SELECT date(i.Date), count(*) cnt
FROM invoice i
WHERE MONTH(i.Date) = 3
GROUP BY date(i.Date)

Этосгруппирует все даты, которые совпадают.Это то, что вы имели в виду?

Я использую GROUP_CONCAT для подзапросов, возвращающих более одной строки.

* EDIT * OUPS, увидел, что мое предложение было таким же, как вы ужепытался.Тогда я не понимаю, что вы ищете.Можете ли вы показать пример желаемого результата?

...