图片,我们有这样的一个表:如何按/ group_concat分组每个结果集?
表1
+----------+----------+--------+------------+
| position | epoc | name | value |
+----------+----------+--------+------------+
| 1 | 1 | A | v01 |
| 1 | 1 | B | v02 |
| 1 | 1 | C | v03 |
| 1 | 2 | A | v04 |
| 1 | 2 | B | v05 |
| 1 | 2 | C | v06 |
| 1 | 3 | A | v07 |
| 1 | 3 | B | v08 |
| 1 | 3 | C | v09 |
| 1 | 4 | A | v10 |
| 1 | 4 | B | v11 |
| 1 | 4 | C | v12 |
| 2 | 5 | A | v13 |
| 2 | 5 | B | v14 |
| 2 | 5 | C | v15 |
| 2 | 6 | A | v16 |
| 2 | 6 | B | v17 |
| 2 | 6 | C | v18 |
| 2 | 7 | A | v19 |
| 2 | 7 | B | v20 |
| 2 | 7 | C | v21 |
| 2 | 8 | A | v22 |
| 2 | 8 | B | v23 |
| 2 | 8 | C | v24 |
+----------+----------+--------+------------+
我希望能够得到这个表:
表2
+----------+--------------------+
| position | value |
+----------+--------------------+
| 1 | v01,v02,v04,v05 |
| 2 | v13,v14,v16,v17 |
+----------+--------------------+
条件是:
- 只是带有“name”A或B的行的“值”;
- JUST“epocs”是前两个唯一结果的“位置”(epoc 3,4,7,8被丢弃)
- GROUP by table1 position(对于每个位置,我希望匹配值的连接以前的条件)
SELECT GROUP_CONCAT(值),名字FROM(SELECT '@' 行:= '@' 行+1作为rownum,位置,值,名称位置FROM(SELECT'@'row:= 0)r,table1)s WHERE rownum%2 = 1和name =“A”按位置分组; 这会产生一个表格,每个“位置”只有第一个“名称”值,而不是设置“名称”<2的第一个(或多个)。它也不会给我“epocs”的限制,它会返回所有! “epocs” – kairos