2017-02-11 6 views
0

私には問題があり、解決策はありません。他のすべての行から選択した値mysqlをマージする

私は、MYSQLサーバにある一定の周期性を持つ報告システム(独自のsite_id:sを持つ)を組み込んでいます。 時々外気温度T00が壊れています(手動で検出します)。その場合、site_id 1のT00をsite_id 2のT00に置き換えます。

私は気温が最も近い時間を使いたいと思いますcalculated_time_stampを見てください。次または前の23分以内にsite_id 2からの有効な温度が常に存在します。私は典型的な5000のレコードのためにこれをしたいと思います。

私は、出力は次のようになり1と2をSITE_ID選択した場合:私は、私は自分で把握カント一部のSQLスワップマジックを実行した後

Site_id calculated_time_stamp T00 T01 T02 
    1 2017-02-12 21:00:00 25 32.0 28.2 
    2 2017-02-12 21:15:00 2.3 31.0 29.1 
    1 2017-02-12 21:23:43 25 32.3 28.0 
    2 2017-02-12 21:38:42 2.4 33.3 28.1 

私はそれが次のようになりたい:

Site_id calculated_time_stamp T00 T01 T02 
     1 2017-02-12 21:00:00  2.3 32.0 28.2 
     2 2017-02-12 21:15:00  2.3 31.0 29.1 
     1 2017-02-12 21:23:43  2.4 32.3 28.0 
     2 2017-02-12 21:38:42  2.4 33.3 28.1 

アイデア?

+3

のようなものを使用してみてくださいサンプル入力と出力を表示してください。 –

+0

あなたは何をしようとしているのか分かりません。 2つの行が、例えば、お互いのX秒以内にある場合、どのTIME値を使用しますか? –

+0

@GordonLinoff、ありがとう。私は今、別の方法でそれを記述しようとしました。私はTouをpreviuusまたはnextから使用したいが、別のsite_idから使いたい。 – Laban

答えて

0
UPDATE table_name a 
SET a.t00 = 
    (SELECT b.t00 FROM table_name b 
    WHERE TIME_TO_SEC(timediff(a. calculated_time_stamp, b. calculated_time_stamp)) < 23*60 
    AND b.site_id=2) 
WHERE a.site_id=1 

この

+0

ありがとうKaran。私はこれを試しましたが、次のエラーが表示されます。 #1093 - FROM句の更新にターゲット表 'a'を指定することはできません – Laban

関連する問題