MySQL 行转列
时间: 2023-09-02 22:09:33 浏览: 107
MySQL 行转列可以使用 PIVOT 操作来实现。具体操作如下:
1. 使用 GROUP BY 将相同的行分组。
2. 使用 GROUP_CONCAT 函数将每个组中的行合并为一个字符串。
3. 使用 SUBSTRING_INDEX 函数将组合字符串拆分为多个子字符串。
4. 使用 CASE WHEN 和 SUM 函数将每个子字符串转换为列。
下面是一个示例查询,将订单表中的订单项转换为列:
```
SELECT
order_id,
MAX(CASE WHEN item_number = 1 THEN product_name ELSE NULL END) AS item_1_name,
MAX(CASE WHEN item_number = 1 THEN quantity ELSE NULL END) AS item_1_quantity,
MAX(CASE WHEN item_number = 2 THEN product_name ELSE NULL END) AS item_2_name,
MAX(CASE WHEN item_number = 2 THEN quantity ELSE NULL END) AS item_2_quantity,
MAX(CASE WHEN item_number = 3 THEN product_name ELSE NULL END) AS item_3_name,
MAX(CASE WHEN item_number = 3 THEN quantity ELSE NULL END) AS item_3_quantity
FROM
order_items
GROUP BY
order_id;
```
这将返回一个结果集,其中每个订单都有三个列,表示每个订单项的名称和数量。
阅读全文