Как настроить автоматическое увеличение? - PullRequest
0 голосов
/ 27 июня 2019

Добрый день всем. Таким образом, у меня есть много данных в Excel, которые мне нужно было вставить в БД, но я не заметил, что вставил дублирующее значение (потому что hr не разбирал его).

Так или иначе, вот сделка

[id][name]
[1][name1]
[2][name2] // I want to delete this row
[3][name3]
[4][name4]

Я хочу удалить строку 2. Я хочу сделать автоматическую настройку идентификатора, например,

[id][name]
[1][name1]
[2][name3] // The id will adjust
[3][name4]

Можно ли этого достичь? Или, если нет, можно ли обойтись?

PS: мои данные уже на 50k, и я хочу удалить строки в 7k

1 Ответ

0 голосов
/ 27 июня 2019

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

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

SELECT
    ROW_NUMBER() OVER (ORDER BY ts_column) id,
    name
FROM yourTable
ORDER BY
    id;

Вы можете также иметь возможность заказать ROW_NUMBER, используя столбец id, и получить тот же результат. Если вы используете версию MySQL более ранней, чем 8+, вы можете смоделировать ROW_NUMBER с помощью пользовательских переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...