2017-02-11 1 views
0

У меня проблема, и у меня нет решения.Объединить выбранные значения mysql со всех остальных строк

У меня есть встроенные системы (которые имеют уникальный site_id: s), сообщающие о температуре с определенной периодичностью на сервер MYSQL. Иногда наружные температуры T00 повреждены (это я буду обнаруживать вручную), в этом случае я хочу заменить T00 с сайта_id 1 на T00 с сайта site_id 2.

Я хочу использовать температуру, ближайшую ко времени, которую я могу найти по глядя на вычисляемый_time_stamp. Всегда будет действительная температура от site_id 2 в течение следующих или предыдущих 23 минут. Я хочу сделать это для типично 5000 записей в то время.

Если я выбираю Site_ID 1 и 2 выход будет выглядеть так:

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 

После того как я выполнить некоторые SQL своп магии, что я не могу понять, на мой собственный, я хочу, чтобы выглядеть следующим образом:

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

Я не понимаю, что вы пытаетесь сделать. Если две строки находятся внутри, скажем, X секунд друг от друга, какое значение «T00» вы используете? –

+0

@ GordonLinoff, спасибо за ответ. Теперь я попытался описать это по-другому. Я хочу использовать T00 из предыдущего или следующего, но из другого 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 - Вы не можете указать целевую таблицу 'a' для обновления в предложении FROM – Laban

Смежные вопросы