使用服务器端预处理语句进行子查询?

时间:2012-04-23 12:02:31

标签: mysql prepared-statement

我正在处理一个奇怪的数据库架构:我正在寻找的数据存储在30列中的一列中:value1, value2, value3 ... value30

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

enter image description here

如何使用此号码告诉mysql为每个“machine_id”带来相应的“valuex”列?

我已阅读MySQL concat() to create column names to be used in a query?,我应该应用该技术还是寻找其他地方?

2 个答案:

答案 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
    (...)