這應該一旦你改變表名。訣竅是分階段構建它。首先,合併value_1
和value_2
,然後按總數分組,然後使用,
作爲分隔符,最後按|
分組。
select type,
group_concat(distinct total separator '|') as total,
group_concat(distinct id separator '|') as id,
group_concat(distinct vals separator '|') as vals
from (select type,
group_concat(distinct total separator ',') as total,
group_concat(distinct id separator ',') as id,
group_concat(distinct vals separator ',') as vals,
count(id) as count
from (select id, total, type, concat(value_1,'-',value_2) as vals from tbl) as a
group by total, type order by count desc) as b
group by type;
我複製你的表,所以我可以測試出來
mysql> select * from tbl;
+------+-------+------+---------+---------+
| id | total | type | value_1 | value_2 |
+------+-------+------+---------+---------+
| 1 | 9 | 1 | 10 | 20 |
| 2 | 9 | 1 | 21 | 30 |
| 3 | 10 | 1 | 31 | 40 |
| 4 | 9 | 2 | 41 | 50 |
| 5 | 9 | 2 | 51 | 60 |
| 6 | 8 | 2 | 61 | 70 |
+------+-------+------+---------+---------+
6 rows in set (0.00 sec)
下面是結果。
mysql> select type,
-> group_concat(distinct total separator '|') as total,
-> group_concat(distinct id separator '|') as id,
-> group_concat(distinct vals separator '|') as vals
-> from (select type,
-> group_concat(distinct total separator ',') as total,
-> group_concat(distinct id separator ',') as id,
-> group_concat(distinct vals separator ',') as vals,
-> count(id) as count
-> from (select id, total, type, concat(value_1,'-',value_2) as vals from tbl) as a
-> group by total, type order by count desc) as b
-> group by type;
+------+-------+-------+-------------------+
| type | total | id | vals |
+------+-------+-------+-------------------+
| 1 | 9|10 | 1,2|3 | 10-20,21-30|31-40 |
| 2 | 9|8 | 4,5|6 | 41-50,51-60|61-70 |
+------+-------+-------+-------------------+
2 rows in set, 1 warning (0.00 sec)
此刻,我只能通過總的查詢組,當試圖按 型 選擇 \t總, \t GROUP_CONCAT我有點困難(ID SEPARATOR「|」)爲ID , \t GROUP_CONCAT( \t \t CONCAT_WS( \t \t \t ' - ', \t \t \t _1, \t \t \t _2 \t \t)SEPARATOR '|' \t)AS值 FROM \t表 GROUP BY \t總 –