У меня огромная таблица с 2м + строками.Структура выглядит следующим образом:
ThingName (STRING),
Date (DATE),
Value (INT64)
Иногда Value
равен null
, и мне нужно исправить это, установив для него значение NOT NULL Value
, ближайшего к нему с помощью Date
строка, соответствующая ThingName
...
И я совершенно не SQL-парень.
Я попытался описать свою задачу с помощью этого запроса (и упростил ее, используя только предыдущиедаты (но на самом деле мне нужно проверить и будущие даты)):
update my_tbl as SDP
set SDP.Value = (select SDPI.Value
from my_tbl as SDPI
where SDPI.Date < SDP.Date
and SDP.ThingName = SDPI.ThingName
and SDPI.Value is not null
order by SDPI.Date desc limit 1)
where SDP.Value is null;
Там я пытаюсь установить строку обновления Value
с той, которую я выбираю из той же таблицы для той же ThingName
и с limit 1
Я оставляю только один результат.
Но редактор запросов говорит мне следующее: Correlated subqueries that reference other tables are not supported unless they can be de-correlated, such as by transforming them into an efficient JOIN.
На самом деле, я совсем не уверен, что мою задачу можно решить только с помощью запроса.
Так, кто-нибудь может мне помочь?Если это невозможно, то скажите мне, если возможно, скажите, какие конструкции SQL могут мне помочь.