我正在尝试按列进行选择和分组,但保留所有行的其他列。我收到错误消息#1242 - 子查询返回超过1行。
我的表
我想要的结果
贝娄是我的疑问:
SELECT name FROM table WHERE (SELECT pro_id FROM table GROUP BY pro_id)
答案 0 :(得分:2)
尝试此查询:
SELECT Pro_id
, GROUP_CONCAT(Name SEPARATOR ', ') AS Name
FROM MyTable
GROUP BY Pro_ID;
结果:
| PRO_ID | NAME |
-------------------------
| 1 | john, sandra |
| 2 | jeo |
| 3 | bruno, piter |
答案 1 :(得分:0)
您不能像在示例中那样在SQL结果集中“合并单元格”。您可以做的最好的事情是使用GROUP_CONCAT
函数在一个“单元格”中“连接”多个值,或者使用ORDER BY
子句对行进行排序以将公共值组合在一起。
考虑到这一点,您需要一个非常基本的SELECT ... ORDER BY
语句:
SELECT name, pro_id FROM table ORDER BY pro_id
产:
+---------+--------+
| NAME | PRO_ID |
+---------+--------+
| john | 1 |
| sandra | 1 |
| jeo | 2 |
| bruno | 3 |
| piter | 3 |
+---------+--------+