Mysql интерполяция - PullRequest
       6

Mysql интерполяция

0 голосов
/ 16 октября 2018

У меня есть следующие данные в mysql:

date,value,id

2016-01-01,0,1
2016-01-04,1,2
2016-01-10,2,3
2016-01-25,1,4
2016-01-26,10,5

У меня есть другая таблица с только датами и идентификаторами, которые я хочу вставить в первую таблицу, используя следующее правило: установите значение как значение впоследняя дата перед датой данного идентификатора.То есть, если я должен ввести следующие элементы:

date,id

2016-01-02,6
2016-01-03,7
2016-01-11,8
2016-01-28,9
2016-01-28,10

Я хочу, чтобы финальный стол был:

date,value,id

2016-01-01,0,1
2016-01-04,1,2
2016-01-10,2,3
2016-01-25,1,4
2016-01-26,10,5
2016-01-02,0,6
2016-01-03,0,7
2016-01-11,28
2016-01-28,10,9
2016-01-28,10,10

Не могли бы вы мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете получить «предыдущее» значение, используя коррелированный подзапрос:

select x.date, x.id,
       (select t.value
        from t
        where t.date <= x.date
        order by t.date desc
        limit 1
       ) as value
from (select '2016-01-02' as date, 6 as id union all
      select '2016-01-03' as date, 7 as id union all
      select '2016-01-11' as date, 8 as id union all
      select '2016-01-28' as date, 9 as id union all
      select '2016-01-28' as date, 10 as id 
     ) x;

Если вы хотите вставить их в таблицу, просто поставьте предложение insert перед select.Если вам нужен набор результатов со всеми строками, тогда используйте union all с другой таблицей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...