MySQL如何根据行列数字标识匹配对应列值整合电压电流数据
MySQL 按Zone Attribute匹配对应电压、电流列的实现方案
你可以直接通过SQL查询完成列的动态映射,不需要额外做数据导出处理,以下是两种常用实现方式,根据实际场景选择即可:
方案1:固定列场景用
CASE WHEN硬编码匹配(性能最优、兼容性最好)
如果你Voltage/Current列的后缀编号是固定范围(比如当前是1-6),直接用条件判断取值即可,写法最简单、执行效率最高:-- 请将下方的device_power_data替换为你实际的表名 SELECT LOT_LOCATION, `Zone Attribute`, CASE `Zone Attribute` WHEN '1' THEN Voltage_1 WHEN '2' THEN Voltage_2 WHEN '3' THEN Voltage_3 WHEN '4' THEN Voltage_4 WHEN '5' THEN Voltage_5 WHEN '6' THEN Voltage_6 END AS Voltage, CASE `Zone Attribute` WHEN '1' THEN Current_1 WHEN '2' THEN Current_2 WHEN '3' THEN Current_3 WHEN '4' THEN Current_4 WHEN '5' THEN Current_5 WHEN '6' THEN Current_6 END AS Current FROM device_power_data;注意:如果你的
Zone Attribute字段是整数类型,把WHEN后面的单引号去掉即可,避免类型隐式转换导致匹配失败返回NULL。方案2:动态列场景用预处理语句自动生成匹配规则(易维护)
如果后续你可能新增Voltage_7、Current_7这类新列,不想每次改SQL,可以通过读取系统表自动拼接查询逻辑,不需要手动维护CASE里的分支:-- 配置项:把下方两处device_power_data替换为你的实际表名即可 SET @query_sql = NULL; -- 自动拼接Voltage列的匹配规则 SELECT GROUP_CONCAT( CONCAT('WHEN ''', REPLACE(COLUMN_NAME, 'Voltage_', ''), ''' THEN ', COLUMN_NAME) SEPARATOR ' ' ) INTO @voltage_match FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'device_power_data' AND COLUMN_NAME LIKE 'Voltage_%'; -- 自动拼接Current列的匹配规则 SELECT GROUP_CONCAT( CONCAT('WHEN ''', REPLACE(COLUMN_NAME, 'Current_', ''), ''' THEN ', COLUMN_NAME) SEPARATOR ' ' ) INTO @current_match FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'device_power_data' AND COLUMN_NAME LIKE 'Current_%'; -- 组装完整查询SQL并执行 SET @query_sql = CONCAT( 'SELECT LOT_LOCATION, `Zone Attribute`, ', 'CASE `Zone Attribute` ', @voltage_match, ' END AS Voltage, ', 'CASE `Zone Attribute` ', @current_match, ' END AS Current ', 'FROM device_power_data' ); PREPARE run_stmt FROM @query_sql; EXECUTE run_stmt; DEALLOCATE PREPARE run_stmt;这个方案会自动识别表中所有符合Voltage_x、Current_x命名规则的列,新增列后无需修改代码即可自动适配,注意要确保你的数据库账号有访问
INFORMATION_SCHEMA系统库的权限。
如果你需要把转换后的结构永久存储,只需要在SELECT语句前加上CREATE TABLE 新表名 AS,执行后就会生成你期望结构的新表,后续可以直接使用新表替代原有宽表。
内容的提问来源于stack exchange,提问作者GQS
相关产品推荐
相关产品推荐

