如何在MySQL中选择group by的位置?

如何在MySQL中选择group by的位置?,mysql,sql,group-by,Mysql,Sql,Group By,我试图按列进行选择和分组,但将其他列保留为所有行。我得到一条错误消息,1242-Subquery返回的行数超过1行 我的桌子 我想要的结果 以下是我的疑问: SELECT name FROM table WHERE (SELECT pro_id FROM table GROUP BY pro_id) 请尝试以下查询: SELECT Pro_id , GROUP_CONCAT(Name SEPARATOR ', ') AS Name FROM MyTable GROUP BY

我试图按列进行选择和分组,但将其他列保留为所有行。我得到一条错误消息,1242-Subquery返回的行数超过1行

我的桌子

我想要的结果

以下是我的疑问:

SELECT name FROM table WHERE (SELECT pro_id FROM table GROUP BY pro_id)
请尝试以下查询:

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 |

请参见您不能像在示例中那样在SQL结果集中合并单元格。最好是使用GROUP_concat函数在一个单元格中concat多个值,或者使用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 |
+---------+--------+