mysql竖表变横表不含聚合


前言

在MySQL中将竖表转换为横表(也称为行转列操作),不涉及聚合函数,通常可以通过使用条件判断和自连接来实现。假设有一个竖表vertical_table,包含以下结构:


一、vertical_table

id | attribute_name | attribute_value
-------------------------------------
1  | name           | John
1  | age            | 30
1  | city           | New York
2  | name           | Alice
2  | age            | 25
2  | city           | Los Angeles

二、转换

1.要将其转换为横表形式,例如:

id | name  | age | city
------------------------
1  | John  | 30  | New York
2  | Alice | 25  | Los Angeles

2.sql

SELECT
    id,
    MAX(CASE WHEN attribute_name = 'name' THEN attribute_value END) AS name,
    MAX(CASE WHEN attribute_name = 'age' THEN attribute_value END) AS age,
    MAX(CASE WHEN attribute_name = 'city' THEN attribute_value END) AS city
FROM vertical_table
GROUP BY id;


总结

这里的关键点是利用了条件表达式 CASE WHEN 将不同的属性名 (attribute_name) 对应的值 (attribute_value) 放置到各自的列中。MAX 函数用于确保每个列中只有一个值,因为在没有聚合函数(如 GROUP BY)的情况下,单个查询可以返回多行,但是我们只需要一行。

上述查询将竖表 vertical_table 转换为横表,每个 id 对应一行,并将不同的属性作为列名,对应其值。

相关推荐

  1. mysql聚合

    2024-06-18 12:50:01       34 阅读
  2. MySQL联合查询&聚合函数应用实例

    2024-06-18 12:50:01       38 阅读
  3. Mysql联查使用聚合函数常见问题

    2024-06-18 12:50:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 12:50:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 12:50:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 12:50:01       87 阅读
  4. Python语言-面向对象

    2024-06-18 12:50:01       96 阅读

热门阅读

  1. Chrome 报错: ERR_ACCESS_DENIED

    2024-06-18 12:50:01       40 阅读
  2. AI大战:通用VS垂直模型,谁主未来?

    2024-06-18 12:50:01       31 阅读
  3. xpath爬取4399的最新游戏系列

    2024-06-18 12:50:01       28 阅读
  4. Day05 数组

    2024-06-18 12:50:01       32 阅读
  5. C++中的八大设计原则

    2024-06-18 12:50:01       26 阅读
  6. window环境C++读取带中文的文档乱码问题

    2024-06-18 12:50:01       34 阅读
  7. 使用微信小程序制作画布

    2024-06-18 12:50:01       28 阅读
  8. 比较两个对象相同对象不同值

    2024-06-18 12:50:01       28 阅读
  9. “==“和 equals 方法究竟有什么区别?

    2024-06-18 12:50:01       35 阅读
  10. 【斗地主game】

    2024-06-18 12:50:01       28 阅读