我正在使用一个奇怪的数据库模式:我要查找的数据存储在 30 列之一中:value1, value2, value3 ... value30
。
使用查询,我知道要查找的列号:
我怎样才能用这个数字告诉mysql给我带来,对于每个“machine_id”,对应的“ valuex
”列?
我已经阅读了MySQL concat() 来创建要在查询中使用的列名?,我应该应用该技术还是寻找其他地方?
我正在使用一个奇怪的数据库模式:我要查找的数据存储在 30 列之一中:value1, value2, value3 ... value30
。
使用查询,我知道要查找的列号:
我怎样才能用这个数字告诉mysql给我带来,对于每个“machine_id”,对应的“ valuex
”列?
我已经阅读了MySQL concat() 来创建要在查询中使用的列名?,我应该应用该技术还是寻找其他地方?
如果您正好有 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;
我做了一个简单的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
(...)