2

我正在使用一个奇怪的数据库模式:我要查找的数据存储在 30 列之一中:value1, value2, value3 ... value30

使用查询,我知道要查找的列号:

在此处输入图像描述

我怎样才能用这个数字告诉mysql给我带来,对于每个“machine_id”,对应的“ valuex”列?

我已经阅读了MySQL concat() 来创建要在查询中使用的列名?,我应该应用该技术还是寻找其他地方?

4

2 回答 2

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;
于 2012-04-23T13:37:06.693 回答
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
    (...)
于 2012-04-23T14:14:59.720 回答