假设您正在使用 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 |
-----------------------------------------
| 公寓 | 43 | 佐罗 | 89 | 穆拉 |
| 家 | 4 | 佩罗 | 12 | 加图 |
| 屋顶 | 19 | 萨波 | 31 | 鼠标 |
这是SQLFiddle演示
现在,您可以采用不同的方法,使用不同的分隔符将 and 和值打包到id
一col2
列中(我们称之为)。然后在您迭代结果集时将其放在客户端上。CONCAT()
GROUP_CONCAT()
details
explode
SELECT col1, GROUP_CONCAT(CONCAT(id, '|', col2)) details
FROM Table1
GROUP BY col1
样本输出:
| COL1 | 详情 |
--------------------------------
| 公寓 | 89|穆拉,43|佐罗|
| 家 | 4|perro,12|加图 |
| 屋顶 | 31|鼠标,19|萨波 |
这是SQLFiddle演示