powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранит данные в алфавитном порядке, а надо в порядке заполнения
19 сообщений из 19, страница 1 из 1
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638211
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

MySQL 5.1, InnoDB, MySQL Workbench.

Помогите, пожалуйста, исправить такую проблему:

Я заношу данные в таблицу из файла в следующей последовательности:
ID Группа1 К01-12С2 К01-12В3 К01-12А4 К02-12С5 К02-12В6 К02-12А

При SELECT * FROM Table, они выводятся в следующей последовательности:
ID Группа3 К01-12А2 К01-12В1 К01-12С6 К02-12А5 К02-12В4 К02-12С

А мне нужно, чтобы SELECT * FROM Table выводил данные в той последовательности, в которой они были занесены в таблицу.

Как я понял, проблема в том, какой метод представления (collation) БД я использую.
Пробовал делать запросы с
Код: sql
1.
SELECT * FROM Table COLLATE utf8_general_ci

,
Код: sql
1.
SELECT * FROM Table COLLATE utf8_unicode_ci

,
Код: sql
1.
SELECT * FROM Table COLLATE utf8_bin

- результата нет.
Кодировка БД, клиента, коннекшена и результата UTF8.

Просьба сильно не пинать, если вопрос глупый. В SQL 2-ой день.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638219
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT * FROM Table ORDER BY id
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638225
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, так можно. Но мне бы хотелось без ORDER BY. Сейчас попробовал тоже самое сделать на MSSQL - там в какой последовательности заносишь данные в БД, в такой они и хранятся.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638228
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AfelionНо мне бы хотелось без ORDER BY.В MySQL только ORDER BY и GROUP BY гарантируют порядок вывода.

И, кстати, покажите DDL таблицы. Любопытно, что там за первичный ключ.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638234
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE SCHEMA IF NOT EXISTS `eljournal` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `eljournal`;

CREATE TABLE IF NOT EXISTS `eljournal`.`Tbl_Groups` (
  `ID_Group` INT NOT NULL AUTO_INCREMENT,
  `Number_group` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`ID_Group`),
  UNIQUE INDEX `Name_subject_UNIQUE` (`Number_group` ASC))
ENGINE = InnoDB;



И только сейчас, глядя на DDL, я увидел слово "ASC" в абсолютно ненужном мне месте. Вот что значит доверять автоматическому генератору кодов!
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638236
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AfelionИ только сейчас, глядя на DDL, я увидел слово "ASC" в абсолютно ненужном мне месте. Вот что значит доверять автоматическому генератору кодов!Это полная ерунда.
Во-первых, порядок сортировки в индексе далеко не всегда влияет на порядок вывода. И даже когда влияет - гарантии не дает.
Во-вторых, в MySQL все индексы ASC, т.к. MySQL по другому просто не умеет.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638237
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, действительно поторопился. Попробовал создавать без ASC и с ASK в ID - результат тот же - выводит в алфавитном порядке.
Это как то странно. Даже если так положено, то можете, пожалуйста, дать ссылку на какую-нибудь теорию по обоснованию этого явления?
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638238
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AfelionДаже если так положено, то можете, пожалуйста, дать ссылку на какую-нибудь теорию по обоснованию этого явления?Это не "так положено". MySQL имеет право выводить записи в любом порядке, пока в запросе явно не указан порядок сортировки.
В данном конкретном случае похоже, что индекс `Name_subject_UNIQUE` используется в качестве покрывающего. Проверить это можно, посмотрев план запроса. Для этого нужно подставить слово EXPLAIN в его начале.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638239
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
EXPLAIN SELECT * FROM Table
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638241
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
EXPLAIN SELECT * FROM Table
ORDER BY ID



Теперь в поле Key значение Primary. Т.е. Вы были правы на счёт перекрытия.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638242
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, как я и говорил :)
В другой раз данные могут оказаться прочитаны из таблицы. В другом порядке, разумеется.
А добавите поле в таблицу или секцию WHERE в запрос (уже не говоря про более сложные запросы), порядок может опять поменяться.

Поэтому вариант только один - указывать желаемую сортировку явно.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638243
Afelion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за разбор!
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638388
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AfelionДа, так можно. Но мне бы хотелось без ORDER BY. Сейчас попробовал тоже самое сделать на MSSQL - там в какой последовательности заносишь данные в БД, в такой они и хранятся.

если сможешь обосновать почему без ORDER BY - подскажу
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638488
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskAfelionДа, так можно. Но мне бы хотелось без ORDER BY. Сейчас попробовал тоже самое сделать на MSSQL - там в какой последовательности заносишь данные в БД, в такой они и хранятся.

если сможешь обосновать почему без ORDER BY - подскажуВ частном случае, возможно, и подскажете.
В общем случае: сервер записывает данные так, как ему удобнее это делать (и вовсе не обязательно "подряд"). И извлекает точно так же. Поэтому говорить о каком-либо "порядке хранения" строк в таблице нельзя в принципе.

Конечно, если вам больше нравятся ненадежные приложения - вы вправе считать все что угодно, в том числе "хранение в порядке добавления", или "извлечение в порядке кластерного индекса" и т.п.

Но единственный гарантированный способ получения данных в требуемом порядке - ORDER BY.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638506
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007MaratIskпропущено...


если сможешь обосновать почему без ORDER BY - подскажуВ частном случае, возможно, и подскажете.Мне даже интересно в каком. Единственный частный случай, который я помню, требует MyISAM, но у топикстартера InnoDB.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638813
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме всего прочего, я рекомендую топикстартеру завести отдельное поле, в котором бы хранился номер записи в порядке заполнения. Первичный ключ для этого использовать по хорошему нельзя, если действительно интересует какой-то особый порядок.
Что такое "порядок заполнения", кстати -- тоже большой вопрос.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638828
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПоэтому говорить о каком-либо "порядке хранения" строк в таблице нельзя в принципе.
для mysql верно ровно обратное. нельзя говорить о таблице без упорядочивания данных.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38638893
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторПоэтому говорить о каком-либо "порядке хранения" строк в таблице нельзя в принципе.
для mysql верно ровно обратное. нельзя говорить о таблице без упорядочивания данных.

Порядок хранения и порядок записей при выводе -- это сильно разные вещи.
...
Рейтинг: 0 / 0
Хранит данные в алфавитном порядке, а надо в порядке заполнения
    #38639011
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС не подозревает, что в таблице БД нет ни первой, ни ни последней записи
что физически в файле они могут располагаться как угодно

Модератор: Пост исправлен. Прошу впредь воздерживаться от переходов на личности.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранит данные в алфавитном порядке, а надо в порядке заполнения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]