假设是你使用MySQL(此标记先行在你的问题)。
你在找这样的事吗?
SELECT col1,
MIN(CASE WHEN rnum = 1 THEN id END) id1,
MIN(CASE WHEN rnum = 1 THEN col2 END) col21,
MIN(CASE WHEN rnum = 2 THEN id END) id2,
MIN(CASE WHEN rnum = 2 THEN col2 END) col22
FROM
(
SELECT t.*, @n := IF(@g = col1, @n + 1, 1) rnum, @g := col1
FROM Table1 t, (SELECT @n := 0) i
ORDER BY col1, id
) q
GROUP BY col1
输出示例:
| COL1 | ID1 | COL21 | ID2 | COL22 |
-----------------------------------------
| apartment | 43 | zorro | 89 | mula |
| casa | 4 | perro | 12 | gato |
| roor | 19 | sapo | 31 | mouse |
这里是SQLFiddle演示
现在,您可以采取不同的方法,并与CONCAT()
和GROUP_CONCAT()
包id
和col2
值,使用不同的分隔符,分成一列(我们称它为details
)。然后在迭代结果集的同时在客户端上使用explode
。
SELECT col1, GROUP_CONCAT(CONCAT(id, '|', col2)) details
FROM Table1
GROUP BY col1
输出示例:
| COL1 | DETAILS |
--------------------------------
| apartment | 89|mula,43|zorro |
| casa | 4|perro,12|gato |
| roor | 31|mouse,19|sapo |
下面是SQLFiddle演示
什么数据库您使用的?这被标记为MySQL和Oracle。 –
你在问什么?这个问题不清楚。?这是什么?'我有2每个元素,我有2 CASA,2公寓,2 ROOR'具体和技术,而你问这个问题。 –