|
|
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. 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. , Код: sql 1. , Код: sql 1. - результата нет. Кодировка БД, клиента, коннекшена и результата UTF8. Просьба сильно не пинать, если вопрос глупый. В SQL 2-ой день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 23:56:07 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
SELECT * FROM Table ORDER BY id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 00:14:17 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Да, так можно. Но мне бы хотелось без ORDER BY. Сейчас попробовал тоже самое сделать на MSSQL - там в какой последовательности заносишь данные в БД, в такой они и хранятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 00:37:40 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
AfelionНо мне бы хотелось без ORDER BY.В MySQL только ORDER BY и GROUP BY гарантируют порядок вывода. И, кстати, покажите DDL таблицы. Любопытно, что там за первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 00:48:08 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. И только сейчас, глядя на DDL, я увидел слово "ASC" в абсолютно ненужном мне месте. Вот что значит доверять автоматическому генератору кодов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:10:57 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
AfelionИ только сейчас, глядя на DDL, я увидел слово "ASC" в абсолютно ненужном мне месте. Вот что значит доверять автоматическому генератору кодов!Это полная ерунда. Во-первых, порядок сортировки в индексе далеко не всегда влияет на порядок вывода. И даже когда влияет - гарантии не дает. Во-вторых, в MySQL все индексы ASC, т.к. MySQL по другому просто не умеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:19:29 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Да, действительно поторопился. Попробовал создавать без ASC и с ASK в ID - результат тот же - выводит в алфавитном порядке. Это как то странно. Даже если так положено, то можете, пожалуйста, дать ссылку на какую-нибудь теорию по обоснованию этого явления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:21:28 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
AfelionДаже если так положено, то можете, пожалуйста, дать ссылку на какую-нибудь теорию по обоснованию этого явления?Это не "так положено". MySQL имеет право выводить записи в любом порядке, пока в запросе явно не указан порядок сортировки. В данном конкретном случае похоже, что индекс `Name_subject_UNIQUE` используется в качестве покрывающего. Проверить это можно, посмотрев план запроса. Для этого нужно подставить слово EXPLAIN в его начале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:25:23 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:29:59 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. Теперь в поле Key значение Primary. Т.е. Вы были правы на счёт перекрытия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:33:38 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
О, как я и говорил :) В другой раз данные могут оказаться прочитаны из таблицы. В другом порядке, разумеется. А добавите поле в таблицу или секцию WHERE в запрос (уже не говоря про более сложные запросы), порядок может опять поменяться. Поэтому вариант только один - указывать желаемую сортировку явно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:34:06 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Спасибо за разбор! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 01:36:58 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
AfelionДа, так можно. Но мне бы хотелось без ORDER BY. Сейчас попробовал тоже самое сделать на MSSQL - там в какой последовательности заносишь данные в БД, в такой они и хранятся. если сможешь обосновать почему без ORDER BY - подскажу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 10:20:44 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
MaratIskAfelionДа, так можно. Но мне бы хотелось без ORDER BY. Сейчас попробовал тоже самое сделать на MSSQL - там в какой последовательности заносишь данные в БД, в такой они и хранятся. если сможешь обосновать почему без ORDER BY - подскажуВ частном случае, возможно, и подскажете. В общем случае: сервер записывает данные так, как ему удобнее это делать (и вовсе не обязательно "подряд"). И извлекает точно так же. Поэтому говорить о каком-либо "порядке хранения" строк в таблице нельзя в принципе. Конечно, если вам больше нравятся ненадежные приложения - вы вправе считать все что угодно, в том числе "хранение в порядке добавления", или "извлечение в порядке кластерного индекса" и т.п. Но единственный гарантированный способ получения данных в требуемом порядке - ORDER BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 11:23:02 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Cygapb-007MaratIskпропущено... если сможешь обосновать почему без ORDER BY - подскажуВ частном случае, возможно, и подскажете.Мне даже интересно в каком. Единственный частный случай, который я помню, требует MyISAM, но у топикстартера InnoDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 11:36:09 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
Кроме всего прочего, я рекомендую топикстартеру завести отдельное поле, в котором бы хранился номер записи в порядке заполнения. Первичный ключ для этого использовать по хорошему нельзя, если действительно интересует какой-то особый порядок. Что такое "порядок заполнения", кстати -- тоже большой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 14:49:02 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
авторПоэтому говорить о каком-либо "порядке хранения" строк в таблице нельзя в принципе. для mysql верно ровно обратное. нельзя говорить о таблице без упорядочивания данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 14:55:51 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторПоэтому говорить о каком-либо "порядке хранения" строк в таблице нельзя в принципе. для mysql верно ровно обратное. нельзя говорить о таблице без упорядочивания данных. Порядок хранения и порядок записей при выводе -- это сильно разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 15:41:02 |
|
||
|
Хранит данные в алфавитном порядке, а надо в порядке заполнения
|
|||
|---|---|---|---|
|
#18+
ТС не подозревает, что в таблице БД нет ни первой, ни ни последней записи что физически в файле они могут располагаться как угодно Модератор: Пост исправлен. Прошу впредь воздерживаться от переходов на личности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 17:23:41 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38638236&tid=1834848]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 294ms |

| 0 / 0 |
