Изменить значение в записях БД

Есть 5 записей в таблице users (sort, name)

SORT | NAME

1 Андрей
2 Денис
3 Игорь
4 Максим
5 Сергей

Через PHP я их вывожу по порядку (по sort). Но, теперь мне нужно добавить Александра после Игоря. То есть, придётся в дальнейшем добавлять записи МЕЖДУ уже существующими, чтобы они выводились не в конце, а в средине. Что сделать в таком случае? Как я понимаю, нужно переопределить sort всех записей, которые будут после Александра? Получается: Игорь - 3, Александр (новая запись) - уже 4, Максим - уже не 4, а 5, Сергей - соответственно 6.

Но, как это сделать? Как изменить sort (на один больше) всех нижеследующих после Александра записей?


Ответы (1 шт):

Автор решения: Akina
-- раздвигаем
UPDATE users
SET sort = sort + 1
WHERE sort > ( SELECT sort
               FROM users
               WHERE name = 'Игорь' );
-- и вставляем
INSERT INTO users (sort, name)
SELECT sort + 1, 'Александр'
FROM users
WHERE name = 'Игорь';
→ Ссылка