Как сделать ID записи последовательными без пропусков?
Есть SQL таблица c объявлениями, в которой лежит 100 объявлений от разных юзеров 1 объявление = 1 строка. Строки имеют индексы id по порядку с 1 до 100. Проблема в том, что пользователи могут удалять свои объявления и следовательно появляются «пустоты» в индексах, например если пользователь удалит своё объявление с индексом 2, то при добавлении нового объявления оно добавится не под индексом 2, а под индексом 101, а я хочу чтобы заполнялись эти «пустоты» и новое объявление добавлялось под индексом 2 или еще лучше при удалении перенумеровывались все строки и получали новые индексы от 1 до 99. Можно ли заставить MySQL делать это? Может нужно указать что-то при создании колонки с индексами?
ID по порядку
«MS SQL Server» не использовал, но если провемти аналогию с «SQLite», то только ручками.
Дело в том, что для каждого автоинкрементного поля в системной таблице последовательностей (sequence) создается запись в поле «ЗНАЧЕНИЕ» этой таблицы записывается последний ID, использованный для этого поля. С каждым добавлением записи в таблицу с автоинкрементным полем, счетчик увеличивается на 1.
Ты можеш заблокировать доступ к БД для всех, кроме себя.
Затем выбрать все идентифмкаторы, отсортировав их по возрастанию.
Помле этого последоватнльно перебираеш мписок и меняеш идентификаторы (при этом не забывай сохранять последний выданный ID).
PS:
Настоятельно советую не заниматься заполнением использованных идентификаторов, иначе у тебя могут появмться неверные связки. Например, у кого-то из сотрудников появится 5 детей, он станет трижды женат, дважды судим и его должность станет вдруг сантехником вместо директора.
Ссылочная целостность рулит, конечно, но вдруг что забудеш, или прибьеш связь?
Как составить sql запрос для того чтобы пронумеровать по порядку записи в таблице?
Как составить sql mysql запрос для того чтобы пронумеровать по порядку записи в таблице в заранее подготовленой колонке ?
Желательно 1 запросом если это реально.
Нумерация пойдет с 1. При желании можно подправить стартовое значение и способ вычисления следующего
![]()
Будет достаточно поставить заранее подготовленной колонке auto_increment при создании и она заполниться числами по порядку:
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.5.23.43453
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
SQL оператор ORDER BY
В этом учебном материале вы узнаете, как использовать SQL оператор ORDER BY с синтаксисом и примерами.
Описание
SQL оператор ORDER BY используется для сортировки записей в наборе результатов запроса SELECT.
Синтаксис
Синтаксис для оператора ORDER BY в SQL.
Параметры или аргумент
Примечание
- Если модификатор ASC или DESC не указан в предложении ORDER BY, результаты будут отсортированы по expressions в порядке возрастания. Это эквивалентно ORDER BY expressions ASC
Пример — сортировка результатов по возрастанию
Чтобы отсортировать результаты в порядке возрастания, вы можете указать атрибут ASC. Если после поля в предложении ORDER BY не указано значение (ASC или DESC), порядок сортировки по умолчанию будет соответствовать возрастающему. Давайте рассмотрим это дальше.
В этом примере у нас есть таблица customers со следующими данными: