我正在处理一个奇怪的数据库架构:我正在寻找的数据存储在30列中的一列中:value1, value2, value3 ... value30
。
使用查询,我知道要查找的列号:
如何使用此号码告诉mysql为每个“machine_id”带来相应的“valuex
”列?
我已阅读MySQL concat() to create column names to be used in a query?,我应该应用该技术还是寻找其他地方?
答案 0 :(得分:0)
如果您有30个字段(表模式未更改),则可以使用简单的SQL查询 -
SELECT
machine_id,
SUM(IF(where_is_data = 1, value1, NULL)) AS value1,
SUM(IF(where_is_data = 2, value2, NULL)) AS value2,
SUM(IF(where_is_data = 3, value3, NULL)) AS value3,
...
SUM(IF(where_is_data = 30, value30, NULL)) AS value30
FROM
table
GROUP BY
machine_id;
答案 1 :(得分:0)
我用一个简单的CASE
:
SELECT
inverter.id as inverter_id,
SUM(CASE
when csvData.value = 1 then data.value1
when csvData.value = 2 then data.value2
when csvData.value = 3 then data.value3
(...)
when csvData.value = 30 then data.value30
END)
as value
FROM
(...)