Изменение порядка записей с помощью одного SQL-запроса
В таблице продуктов питания с полем «Позиция» для упорядочения их внешнего вида SQL-запрос может обновлять несколько записей на основе изменения одной записи. Это особенно полезно для изменения порядка элементов в определенном списке.
Предположим, у нас есть таблица вида это:
id | listID | имя | позиция |
---|---|---|---|
1 | 1 | сыр | 0 |
2 | 1 | чипсы | 1 |
3 | 1 | бекон | 2 |
4 | 1 | яблоки | 3 |
5 | 1 | груши | 4 |
6 | 1 | пирог | 5 |
Кому перемещая груши перед фишками, мы можем увеличить позицию всех элементов между ними на 1.
Однако большинство решений включают в себя несколько запросов, что может быть неэффективно. Вместо этого для изменения порядка записей можно использовать один запрос:
UPDATE my_table SET position = position CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
Эта формула гарантирует, что груши перемещаются в позицию 1, а все элементы между грушами и фишками соответственно увеличиваются.
Чтобы изменить порядок любого элемента, просто замените «груши» на имя перемещаемого элемента и при необходимости отрегулируйте разницу.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3