2011-04-03 71 views
1

我该如何分组concat?这里是我的查询mysql组合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 
+0

那么,你想要做什么?没有理由在结果集上使用GROUP_CONCAT,这就是应用程序语言的作用。 – 2011-04-03 16:19:51

+0

那么你的最终结果应该是什么样子? – 2011-04-03 16:19:55

+0

@马丁我想这样的100,97,105 – qwera 2011-04-03 16:30:19

回答

0
SELECT GROUP_CONCAT(`cnt` ORDER BY `date`) 
FROM (
    SELECT t.`date`, COUNT(*) AS `cnt` 
    FROM `table1` t 
    GROUP BY t.`date` 
) d 
0

是否要按日期计算日期行数?

我使用此语句来计算特定月份中每个日期的发票项目数。

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

这将组合所有日期相同。这是你的意思吗?

我使用GROUP_CONCAT来返回多于一行的子查询。

*编辑* OUPS,看到我的建议是一样的,你已经尝试过。然后我不明白你在找什么。你能举出一个期望结果的例子吗?

+0

输出我想这样 查询输出:选择GROUP_CONCAT(COUNT(*))从表组按日期 输出:100,97,105 – qwera 2011-04-03 16:34:41

0

你想是这样的:

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

但是,这不是RDBMS的作用!化妆品是您的应用程序语言(PHP,Python,Ruby,无论)的角色,您的查询应该只选择您的数据,句点。因此,在这种情况下,GROUP_CONCAT不是解决方案。

+0

那不是同样使用适用于所有问题'GROUP_CONCAT'? – 2011-04-03 16:38:03

+0

@马丁:实际上,大部分时间,是的。我并不是说它是邪恶的,当你想要做这样的事情时,它很可能是MySQL的唯一解决方案,但它不在ANSI SQL中,还有其他方法可以用ANSI SQL做类似GROUP_CONCAT的操作(并且它是更复杂,我同意)。 – 2011-04-03 16:44:31