Предположим, у нас есть простая база данных, содержащая следующие данные:
name
apple
pear
banana
grape
Пользователь хочет отсортировать эти фрукты по названию, и мы будем иметь, без удивления
apple
banana
grape
pear
Однако по какой-то причине пользователь хотел бы поместить pear
в качестве 3-го фрукта, это означает, что он хотел бы иметь:
apple
banana
pear
grape
И, что важно, пользователь хочет сохранить этот порядок, когда он хочет после этого отсортировать фрукты по названию.
Как мы должны решить эту проблему? В довершение всего, мы могли бы добавить поле user_sort_id
, которое будет обновляться, когда пользователь сортирует и манипулирует результатом сортировки, и мы будем использовать это поле как ключ сортировки.
init value -> sort by name ->place pear as the seconds
name user_sort_id
apple 0 0 0
pear 1 3 2
banana 2 1 1
grape 3 2 3
Этот подход должен работать в теории. Однако на практике я не могу придумать элегантного и быстрого оператора SQL, который мог бы этого достичь. Есть идеи или альтернативы?