MYSQL实现行转列的三种方式
warning:
这篇文章距离上次修改已过203天,其中的内容可能已经有所变动。
在MySQL中,实现行转列可以通过以下三种常见方式:
- 使用
CASE
语句。 - 使用
IF
函数。 - 使用
PIVOT
函数(在MySQL 8.0及以上版本支持)。
以下是使用这三种方法的示例代码:
- 使用
CASE
语句:
SELECT
user_id,
MAX(CASE WHEN item = 'item1' THEN value ELSE NULL END) AS item1,
MAX(CASE WHEN item = 'item2' THEN value ELSE NULL END) AS item2,
MAX(CASE WHEN item = 'item3' THEN value ELSE NULL END) AS item3
FROM your_table
GROUP BY user_id;
- 使用
IF
函数:
SELECT
user_id,
MAX(IF(item = 'item1', value, NULL)) AS item1,
MAX(IF(item = 'item2', value, NULL)) AS item2,
MAX(IF(item = 'item3', value, NULL)) AS item3
FROM your_table
GROUP BY user_id;
- 使用
PIVOT
函数:
SELECT *
FROM (
SELECT user_id, item, value
FROM your_table
) AS src
PIVOT (
MAX(value)
FOR item IN ('item1', 'item2', 'item3')
);
请根据你的MySQL版本和具体需求选择合适的方法实现行转列。
评论已关闭