mysql怎么将列值变列名

avatar
作者
筋斗云
阅读量:1

在MySQL中,可以使用动态SQL或者使用PIVOT函数将列值变为列名。下面是两种方法的示例:

  1. 使用动态SQL:
SET @sql = NULL; SELECT   GROUP_CONCAT(DISTINCT     CONCAT(       'MAX(IF(column_name = ''',       column_name,       ''', column_value, NULL)) AS ',       column_name     )   ) INTO @sql FROM your_table;  SET @sql = CONCAT('SELECT id, ', @sql, ' FROM your_table GROUP BY id');  PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; 

在上面的示例中,假设你有一个表your_table,其中包含idcolumn_namecolumn_value列。通过将动态生成的SQL语句准备好并执行,你可以将column_name的值转换为列名。

  1. 使用PIVOT函数:
SELECT * FROM (   SELECT id, column_name, column_value   FROM your_table ) src PIVOT (   MAX(column_value)   FOR column_name IN ([column1], [column2], [column3]) ) piv; 

在上面的示例中,你需要提前知道column_name中可能的值,并将它们手动列出。然后,使用PIVOT函数将这些列值转换为列名。你可以根据你的实际情况修改列名的列表。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!