我有以下表格片段:
stamp | group | value 123 | 1 | 4 124 | 2 | 5 124 | 2 | 6 125 | 4 | 7 125 | 4 | 8 125 | 5 | 9
我似乎找不到一个给我这个结果的查询:
stamp | value1 | value2 124 | 5 | 6 125 | 7 | 8 125 | 9 | null
所以基本上,所有带有相同标记的结果都会显示,按“组”分组。 这可能吗 ?我试图通过子查询,“分组依据”和“拥有”语句完成此操作,但我似乎无法找到正确的查询..
Thnx提前!
答案 0 :(得分:1)
我认为你或多或少都需要这样的东西:
SELECT stamp, `group`, GROUP_CONCAT(`value`) AS `values`
FROM stamps
GROUP BY stamp, `group`
关键是GROUP_CONCAT。
根据您的数据输出
+-------+-------+--------+
| stamp | group | values |
+-------+-------+--------+
| 123 | 1 | 4 |
| 124 | 2 | 5,6 |
| 125 | 4 | 7,8 |
| 125 | 5 | 9 |
+-------+-------+--------+
答案 1 :(得分:0)
select stamp,
SUBSTR(`values`,1,INSTR(`values`,',')-1) as value1,
NULLIF(TRIM(',' FROM SUBSTR(`values`,INSTR(`values`,',')+1)),'') as value2,
`values`
FROM
(
SELECT stamp, `group`,CONCAT( GROUP_CONCAT(`value`) ,',') AS `values`
FROM stamps
GROUP BY stamp, `group`
) aggr
仅当每个组都有< = 2行时才有效。