mysql如何实现行转列

文 / @WordPress主题

如何实现mysql的行转列?

mysql是一款非常流行的关系型数据库管理系统,其使用广泛,尤其在大数据处理和网站开发方面。在mysql中,有时候我们需要将行数据转换为列数据,这就是行转列的需求。本文将介绍两种常用的方式来实现mysql的行转列。

方法一:用cross join的方式实现

1.1 环境准备

在开始使用cross join的方式实现mysql行转列之前,我们需要检查电脑上是否已经安装mysql8.0.22版,如果没有安装,可以到官网下载并进行安装。同时,我们还需要准备好一个所需的数据库,本文以“tssrza”为例。

1.2 操作步骤

步骤一:创建所需表格。

我们创建一个名为“kills”的表格,其中包含两个字段:用户id和用户击杀数。

CREATE TABLE `kills` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`kills` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

同时,我们为其添加一些测试数据,如下:

INSERT INTO `kills` (`id`, `user_id`, `kills`) VALUES
(1, 1, 20),
(2, 2, 10),
(3, 3, 15),
(4, 1, 8),
(5, 2, 5),
(6, 3, 6);

注释:这些数据表示三个用户(id为1、2、3)的击杀数量。

步骤二:实现行转列。

用cross join的方式实现行转列语句如下:

SELECT * FROM
(SELECT SUM(a.kills) as '孙悟空' FROM kills a LEFT JOIN tssrza b ON a.user_id=b.id WHERE b.user_name='孙悟空' GROUP BY b.user_name) e
CROSS JOIN
(SELECT SUM(a.kills) as '猪八戒' FROM kills a LEFT JOIN tssrza b ON a.user_id=b.id WHERE b.user_name='猪八戒' GROUP BY b.user_name) f;

注释:以上的代码中,我们首先从表“tssrza”中查找到对应用户的信息,然后根据用户姓名和对应击杀数量进行汇总,最终得到了一个包含了两个字段的结果集。

方法二:用case语句的方式实现

2.1 环境准备

在开始使用case语句的方式实现mysql行转列之前,我们同样需要检查电脑上是否已经安装mysql8.0.22版,如果没有安装,可以到官网下载并进行安装。同时,我们还需要准备好一个所需的数据库,本文以“tssrza”为例。

2.2 操作步骤

步骤一:创建所需表格。

我们同样创建一个名为“kills”的表格,其中包含两个字段:用户id和用户击杀数。

CREATE TABLE `kills` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`kills` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

同时,我们为其添加一些测试数据,如下:

INSERT INTO `kills` (`id`, `user_id`, `kills`) VALUES
(1, 1, 20),
(2, 2, 10),
(3, 3, 15),
(4, 1, 8),
(5, 2, 5),
(6, 3, 6);

注释:这些数据表示三个用户(id为1、2、3)的击杀数量。

步骤二:实现行转列。

用case语句的方式实现行转列语句如下:

SELECT
SUM(CASE WHEN user_name='孙悟空' THEN kills END) AS '孙悟空',
SUM(CASE WHEN user_name='猪八戒' THEN kills END) AS '猪八戒',
SUM(CASE WHEN user_name='沙和尚' THEN kills END) AS '沙和尚'
FROM tssrza a JOIN kills b ON a.id=b.user_id;

注释:以上的代码中,我们使用了case语句根据用户姓名和对应击杀数量进行汇总,最终得到了一个包含了三个字段的结果集。

总结

在本文中,我们介绍了两种常用的方式来实现mysql的行转列,分别是用cross join的方式和用case语句的方式。在实际应用中,可以根据实际情况选择不同的方式来实现。希望本文内容能够对读者有所帮助。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。