2011-04-03 53 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