MySQL 查询结果集纵向展示 - PIVOT 函数与自定义查询方法
MySQL 查询到的结果集是以表格的形式呈现的,每行代表一条记录,每列代表一种属性。如果需要将结果集纵向展示,可以使用 MySQL 的 PIVOT 函数或者自定义查询语句实现。
其中,PIVOT 函数是 MySQL 8.0 版本新增的函数,用于将行转换为列。例如,将以下表格:
| id | name | gender | |----|------|--------| | 1 | Tom | M | | 2 | Lucy | F | | 3 | Jack | M |
使用 PIVOT 函数将 'gender' 列转换为列名,可以得到以下结果:
| id | name | M | F | |----|------|-----|-----| | 1 | Tom | M | | | 2 | Lucy | | F | | 3 | Jack | M | |
具体使用方法可以参考 MySQL 官方文档。
另外,如果需要自定义查询语句,可以使用 UNION ALL 将每列数据作为一条记录返回,然后使用 GROUP BY 将同一列的数据汇总到一起。例如,将以上表格纵向展示,可以使用以下查询语句:
SELECT 'id' AS col_name, CAST(id AS CHAR) AS col_value FROM table_name
UNION ALL
SELECT 'name' AS col_name, name AS col_value FROM table_name
UNION ALL
SELECT 'gender' AS col_name, gender AS col_value FROM table_name
GROUP BY col_name
这样可以得到以下结果:
| col_name | col_value | |----------|-----------| | id | 1 | | id | 2 | | id | 3 | | name | Tom | | name | Lucy | | name | Jack | | gender | M | | gender | F |
需要注意的是,以上方法虽然可以实现结果集纵向展示,但是会导致查询语句变得冗长和复杂,不利于维护和优化。因此,建议尽量使用 PIVOT 函数或者其他更为高效的方法。
原文地址: https://www.cveoy.top/t/topic/oJYU 著作权归作者所有。请勿转载和采集!