首页 > 解决方案 > SQL 将多个单元格中的数据重新排列为一个

问题描述

我正在尝试创建一个视图,该视图按特定列(比如说品牌)和每个品牌的第二列(比如说颜色)的所有实例进行分组,分组在一个单元格中并用分号分隔。我很难用语言表达,但这就是我要找的:

从这张表

|BRAND  |COLOR  |
|-------|-------|
|TOYOTA |BLUE   |
|NISSAN |BLUE   |
|FORD   |BLUE   |
|NISSAN |RED    |
|NISSAN |GREEN  |
|FORD   |RED    |
-----------------

到这个观点

|BRAND  |COLOR          |
|-------|---------------|
|TOYOTA |BLUE           |
|NISSAN |BLUE;RED;GREEN |
|FORD   |BLUE;RED       |
|-------|---------------|

我希望我能提供代码,但我还没有想出任何想法。

标签: mysqlsql

解决方案


您可以使用group_concat. 这是演示

select
  brand,
  group_concat(color order by color SEPARATOR ';' ) as color
from myTable
group by
  brand

输出:

| brand  | color          |
| ------ | -------------- |
| FORD   | BLUE;RED       |
| NISSAN | BLUE;GREEN;RED |
| TOYOTA | BLUE           |

推荐阅读