Добрый день, сложно сформулировать запрос, попытаюсь подробнее описать
Есть таблица:
id; name ; placement
5 ; element01 ; placement01
4 ; element02 ; placement01
3 ; element03 ; placement01
2 ; element01 ; placement02
1 ; element02 ; placement03
На выходе нужно получить
id ; name ; new_placement ; old_placement
5 ; element01 ; placement01 ; placement02
4 ; element02 ; placement01 ; placement03
3 ; element03 ; placement01 ;
2 ; element01 ; placement01 ;
1 ; element02 ; placement03 ;
Т.е. как будто история перемещения, в разрезе каждой записи, где сейчас , и где было, отсортированное по id
Написал подобное, но ощущение что это дорогой вариант и неоптимальный
SELECT new_t.id, new_t.name, new_t.placement AS new_placement,
(SELECT old_t.placement
FROM table old_t
WHERE old_t.name = new_t.name AND
old_t.id < new_t.id
ORDER BY old_t.id DESC
LIMIT 1) AS old_placement
FROM table new_t
ORDER BY new_t.id DESC