mysql行列转换6种方法

频道:网站相关 日期: 浏览:40

MySQL 行列转换

MySQL 是一种常见的关系型数据库管理系统,支持多种数据类型和数据操作。MySQL 行列转换是一种常见的数据操作方式,可以将列数据转换为行数据或将行数据转换为列数据。

mysql行列转换6种方法

以下是介绍 MySQL 行列转换的六种方法:

1. GROUP_CONCAT

GROUP_CONCAT 是一种函数,可以将某一列的多个值合并为一个字符串,并且可以通过 GROUP BY 对不同的值进行分组。它可以用于将一列数据转换为一行数据。例如:

```

SELECT GROUP_CONCAT(name SEPARATOR ',') AS names

FROM students;

上面的 SQL 语句将 students 表中的 name 列的所有值合并为一个字符串,并以逗号分隔。结果如下:

|---------------------|

| names |

| Tom, Jerry, Alice |

2. CASE WHEN

CASE WHEN 是一种条件语句,可以根据不同的条件返回不同的结果,可以用于将一行数据转换为多列数据。

有如下表格:

| name | score |

| Tom | 80 |

| Jerry | 90 |

| Alice | 85 |

我们可以使用以下 SQL 语句将 score 列转换为三列 A, B, C:

SELECT name,

CASE WHEN score >= 90 THEN 'A' ELSE '' END AS A,

CASE WHEN score >= 80 AND score < 90 THEN 'B' ELSE '' END AS B,

CASE WHEN score < 80 THEN 'C' ELSE '' END AS C

结果如下:

|----------------------------------|

| name | A | B | C |

| Tom | | B | |

| Jerry | A | | |

| Alice | | B | |

3. UNION ALL

UNION ALL 是一种将多个查询结果合并为一个查询结果的操作符,可以用于将多行数据转换为多列数据。例如:

SELECT 'score' AS type, score FROM students

UNION ALL

SELECT 'grade' AS type, grade FROM students;

上面的 SQL 语句将 students 表中的 score 和 grade 列分别转换为两列 type 和 value,将两个查询结果合并为一个查询结果。结果如下:

|-----------------------|

| type | value |

| score | 80 |

| score | 90 |

| score | 85 |

| grade | A |

| grade | B |

4. INNER JOIN

INNER JOIN 是一种将多个表格按照某一列进行联接的操作,可以用于将多行数据转换为多列数据。例如:

SELECT students.name, scores.subject, scores.score

FROM students

INNER JOIN scores ON students.id = scores.student_id;

上面的 SQL 语句将 students 表和 scores 表按照 student_id 列进行联接,将两个表格的数据合并为一个查询结果。结果如下:

| name | subject | score |

| Tom | English | 80 |

| Jerry | Math | 90 |

| Alice | English | 85 |

5. PIVOT

PIVOT 是一种将行数据转换为列数据的操作,可以使用多个函数来实现,例如 MAX、MIN、SUM 等。例如:

MAX(CASE WHEN subject = 'English' THEN score ELSE NULL END) AS 'English',

MAX(CASE WHEN subject = 'Math' THEN score ELSE NULL END) AS 'Math'

FROM scores

GROUP BY name;

上面的 SQL 语句将 scores 表格中的数据按照 name 列进行分组,将 subject 列转换为列数据,并将 score 列转换为相应的值。结果如下:

|----------------------|

| name | English | Math |

| Tom | 80 | NULL |

| Jerry | NULL | 90 |

| Alice | 85 | NULL |

6. SUBQUERY

SUBQUERY 是一种将多个查询结果合并为一个查询结果的操作,可以用于将多行数据转换为多列数据。例如:

SELECT name,

(SELECT score FROM scores WHERE student_id = students.id AND subject = 'English') AS 'English',

(SELECT score FROM scores WHERE student_id = students.id AND subject = 'Math') AS 'Math'

上面的 SQL 语句将 scores 表格中的数据按照 student_id 列和 subject 列进行筛选,并将结果合并为一个查询结果。结果如下:

相关词

- 数据库管理系统

- 数据类型

- 数据操作

- 函数

- 条件语句

- 操作符

- 联接

- 分组

- 子查询

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。