Как сделать чтобы id шли по порядку sql
Перейти к содержимому

Как сделать чтобы id шли по порядку sql

  • автор:

Как сделать 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. При желании можно подправить стартовое значение и способ вычисления следующего

Mike's user avatar

Будет достаточно поставить заранее подготовленной колонке 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 со следующими данными:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *