изменение существующих повторяющихся записей в MySQL - PullRequest
1 голос
/ 11 мая 2010

извините за (вероятно) вопрос noob, но я новичок в этом деле.

У меня есть таблица со столбцом 'position', и я хочу, чтобы при вставке новой строки менялось положение каждой строки, которая имеет позицию ниже, чем строка, которая вставлена. например, если я добавлю строку с позицией 4, если есть дубликат, он должен стать 5, 5 должен сместиться в 6 и так далее ...

также, есть ли способ получить наибольшее значение для столбца, кроме проверки его в каждой строке с помощью php?

1 Ответ

2 голосов
/ 11 мая 2010

Вам нужно два запроса. Предполагая, что вы знаете позицию, которую вы вставляете, увеличьте позицию каждой строки, позиция которой больше или равна позиции, которую вы вставляете:

UPDATE table SET position = position + 1 WHERE position >= newPosition

После этого можно вставить newPosition, и дубликатов не будет:

INSERT INTO table SET position = newPosition

Чтобы получить наибольшее значение, вы можете использовать MAX()

SELECT MAX(position) FROM table
...