Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/48: Рейтинг темы: голосов - 48, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 21

Почему ID в БД идут не по порядку?

05.02.2015, 16:35. Показов 9880. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица в БД с 2-мя полями: ID (AI + PK) и NAME (INDEX UNIQUE). При добавлении первой партии записей в поле NAME все ID расставляются как надо, по порядку. После добавления второй партии записей (Есть повторы, но для этого я и установил INDEX UNIQUE) ID уже расставляются не по порядку: 98, 99, 115, 175 и т.д. Подскажите, пожалуйста, в чем же причина? Можно, конечно, делать проверку на уникальность того или иного поля в коде, но для чего тогда INDEX UNIQUE...

Пример:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE mytable(id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(32) UNIQUE);
INSERT IGNORE INTO mytable(name) VALUES('aaa'),('bbb'),('ccc'),('aaa'), ('ddd'),('eee'),('bbb'),('fff');
INSERT IGNORE INTO mytable(name) VALUES('aaa'),('bbb'),('ccc'),('aaa'), ('ddd'),('eee'),('bbb'),('ggg');
SELECT * FROM mytable;
+----+------+
| id | name |
+----+------+
|  1 | aaa  |
|  2 | bbb  |
|  3 | ccc  |
|  4 | ddd  |
|  5 | eee  |
|  6 | fff  |
|  9 | ggg  |
+----+------+
Что тут может быть не так?
Миниатюры
Почему ID в БД идут не по порядку?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2015, 16:35
Ответы с готовыми решениями:

Как имея два рекордсета, упорядочить данные в одном, по порядку, в котором записи идут в другом?
То есть, если у меня первый рекордсет имеет записи построенные следующим образом: первый: 5 | a 2 | c 1 | b 3 | e 4 | d ...

Как определить, по порядку ли идут числа в столбце
Дан столбец A с числами. Какие-то из чисел идут не по порядку, например число 8 стоит между 4 и 5. Нужен макрос, который проверял бы...

Найти длину максимальной последовательности чисел, которые идут по порядку
То есть если дан ряд 1 3 8 9 2 3 4 3 4 4 3 то выведет, что самая длинная последовательность состоит из 3 элементов (если не сложно,...

6
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
05.02.2015, 16:43
Цитата Сообщение от Lokas Посмотреть сообщение
Что тут может быть не так?
В реляционных БД нет понятия "порядок строк". В каком порядке хранятся/записываются строки в таблицу - это внутреннее дело сервера. А для вывода строк в нужном порядке используется кляуза ORDER BY оператора SELECT.
0
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 21
05.02.2015, 17:01  [ТС]
Вопрос не в том, как выводить, а как ввести аккуратно?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
05.02.2015, 17:25
Цитата Сообщение от Lokas Посмотреть сообщение
как ввести аккуратно?
Еще раз повторюсь: при любом порядке ввода порядок физического хранения будет произвольным. Например, строка м.б. вставлена в место, которое стало пустым после удаления другой строки. Более того, когда ты делаешь SELECT без ORDER BY, порядок вывода будет произвольным, т.е. он совсем не обязательно отражает тот порядок, в котором строки физически хранятся. А если учесть, что в реальных задачах SELECT из одной таблицы используется достаточно редко, в основном в запросе несколько таблиц, то о каком порядке без ORDER BY вообще можно говорить?
0
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 21
05.02.2015, 17:31  [ТС]
1,2,3,4,5,6,7,8,9,10 и так до бесконечности. Вопрос в том, как сделать так, чтобы ID были такими? Других вопросов нет. Если вы не знаете как решить проблему, так и скажите. А что-то типо такого: Зачем? Почему? Это уже я решу сам. Спасибо
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
05.02.2015, 19:03
Lokas, last_insert_id() дает значение ID первой добавленной записи. Остальные ID нумеруются в одной операции последовательно. Однако следующая операция добавления не обязана использовать следующий незанятый номер. Так работает механизм MySql (да и не только его) - все претензии к разработчикам СУБД.

И еще - не надо путать ключ с порядковым номером.
0
1234 / 424 / 107
Регистрация: 31.03.2012
Сообщений: 1,159
06.02.2015, 07:30
Цитата Сообщение от Lokas Посмотреть сообщение
Вопрос в том, как сделать так, чтобы ID были такими?
Когда-то давно изучал исходники mysql (еще тройки),и видел, что insert с автоинкрементным полем сначала увеличивает значение для этого поля, а затем в коде идет проверка на дубликаты по другим полям (если таковые имеются и указана кляуза ignore). Думаю, что тех пор мало, что изменилось
Цитата Сообщение от Lokas Посмотреть сообщение
Это уже я решу сам
Решай, решатель, а сделаешь патч, не забудь отослать Monty , может и пригодится таким как ты . Многих, в том числе и меня, значение автоинкрементного поля волнует постольку, поскольку оно есть, а уж по порядку ли оно, или нет, - так по барабану

Не по теме:

cygapb-007, С юбилейный 2000 постом :)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2015, 07:30
Помогаю со студенческими работами здесь

С помощью множества нужно вывести на экран строку в который идут по порядку цифры и буквы из строк которые ввел пользователь
Всем привет!! Не могли бы написать программу ?? Пользователь вводит 2 строки которые состоят из букв(англ) и цифр(1..9) С помощью...

Игры, которые идут только на Win XP, а на Win 7 не идут или плохо идут
Знаю несколкьо игр в которые лучше играть на Вин ХР: Hitman: Blood Money — говорят что и на вин 7 идёт но у меня не получилось. ...

Почему блоки идут не в ряд?
Привет! Подскажите, плиз, почему два блока идут не в ряд (см. скрин)? Откуда пропуски? Ссылка на страницу: ...

Почему идут работать в милицию?
Вот возник вопрос. Интересно, кто как считает. Что движет людьми, которые добровольно идут оформляться в "органы"? Есть,...

Помогите разобраться почему не идут посетители
Сделал саит про Leadership, Motivation, Financial Freedom на английском. Поставил туда рекламу от Google. За месяц всего один клик. И...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru