使用自连接的方法实现行转列
CREATE TABLE `user_kills` ( `id` int(11) NOT NULL, `user_id` int(11) DEFAULT NULL, `timestr` datetime DEFAULT NULL, `kills` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `user_kills` VALUES ('1', '2', '2020-01-10 00:00:00', '10'); INSERT INTO `user_kills` VALUES ('2', '2', '2020-02-01 00:00:00', '2'); INSERT INTO `user_kills` VALUES ('3', '2', '2020-02-05 00:00:00', '12'); INSERT INTO `user_kills` VALUES ('4', '4', '2020-01-10 00:00:00', '3'); INSERT INTO `user_kills` VALUES ('5', '2', '2020-02-11 00:00:00', '5'); INSERT INTO `user_kills` VALUES ('6', '2', '2020-01-06 00:00:00', '1'); INSERT INTO `user_kills` VALUES ('7', '3', '2020-01-11 00:00:00', '20'); INSERT INTO `user_kills` VALUES ('8', '2', '2020-02-12 00:00:00', '10'); INSERT INTO `user_kills` VALUES ('9', '2', '2020-02-07 00:00:00', '17');
使用自连接的方法实现行转列:
SELECT * FROM ( SELECT sum(k.kills) as '猪八戒' FROM user_kills k WHERE k.user_id = 2 ) a CROSS JOIN( SELECT sum(k.kills) as '孙悟空' FROM user_kills k WHERE k.user_id = 3 ) b CROSS JOIN( SELECT sum(k.kills) as '沙悟净' FROM user_kills k WHERE k.user_id = 4 ) c
使用CASE方法实现行转列:
SELECT sum(case when user_id = 2 then k.kills end) as '猪八戒', sum(case when user_id = 3 then k.kills end) as '孙悟空', sum(case when user_id = 4 then k.kills end) as '沙悟净' FROM user_kills k
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律