2

私は奇妙なデータベーススキーマで作業しています:私が探しているデータは30列の1つに保存されています:value1, value2, value3 ... value30

クエリを使用して、検索する列番号がわかります。

ここに画像の説明を入力してください

この番号を使用して、「machine_id」ごとに対応する「valuex」列を取得するようにmysqlに指示するにはどうすればよいですか?

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 に答える