2011-12-25 209 views
87

我已經a table這樣的:GROUP_CONCAT ORDER BY

+-----------+-------+------------+ 
| client_id | views | percentage | 
+-----------+-------+------------+ 
|   1 |  6 |   20 | 
|   1 |  4 |   55 | 
|   1 |  9 |   56 | 
|   1 |  2 |   67 | 
|   1 |  7 |   80 | 
|   1 |  5 |   66 | 
|   1 |  3 |   33 | 
|   1 |  8 |   34 | 
|   1 |  1 |   52 | 

我試圖group_concat

SELECT li.client_id, group_concat(li.views) AS views, 
group_concat(li.percentage) FROM li GROUP BY client_id; 

+-----------+-------------------+-----------------------------+ 
| client_id | views    | group_concat(li.percentage) | 
+-----------+-------------------+-----------------------------+ 
|   1 | 6,4,9,2,7,5,3,8,1 | 20,55,56,67,80,66,33,34,52 | 
+-----------+-------------------+-----------------------------+ 

但我想爲了看法,如:

+-----------+-------------------+----------------------------+ 
| client_id | views    | percentage     | 
+-----------+-------------------+----------------------------+ 
|   1 | 1,2,3,4,5,6,7,8,9 | 52,67,33,55,66,20,80,34,56 | 
+-----------+-------------------+----------------------------+ 
+2

是以逗號分隔值存儲的表中的視圖值和百分比值? – Virendra 2011-12-25 19:44:29

+0

不,他們不是那樣存儲,但我通過我的查詢,即與group_concat – ronquiq 2011-12-25 19:46:52

+0

[MySQL:排序GROUP \ _CONCAT值]可能的重複,使他們(http://stackoverflow.com/questions/995373/mysql-sort- group-concat-values) – outis 2013-01-30 22:38:37

回答

194

可以以這種方式使用ORDER BYGROUP_CONCAT函數內部:

SELECT li.client_id, group_concat(li.percentage ORDER BY li.views ASC) AS views, 
group_concat(li.percentage ORDER BY li.percentage ASC) 
FROM li GROUP BY client_id 
+10

不應該是'group_concat(li.percentage ORDER BY li.views ASC)',以便按照原始帖子的要求,按照與視圖匹配的順序出現百分比。 – 2014-06-17 13:30:20

+0

@aleroot,這個查詢MySQL是否具體? – Pacerier 2015-04-30 20:24:04

+0

是的,GROUP_CONCAT是一個MySQL唯一的函數,但是在其他數據庫上使用代理函數可以實現類似的結果... – aleroot 2015-04-30 20:41:00

0

在IMPALA中,沒有在GROUP_CONCAT中的訂單可能會有問題,因爲在編碼公司。我們有一些解決方法(我們需要Rax/Impala)。如果您需要在IMPALA中使用ORDER BY子句的GROUP_CONCAT結果,請查看此博客文章:http://raxdb.com/blog/sorting-by-regex/