PDA

Показать полную графическую версию : Изменение порядка строк MySQL


ilan
18-07-2003, 12:43
Может кто-нибудь посказать алгоритм (или функцию) для перемещения строки в таблице MySQL на несколько позиций вверх/вниз. Чтобы она именно хранилась с таким id, а не только выводилась.

Megabyte
21-07-2003, 10:36
Хмммм.... А смысл? По большому счёту клиенту без разницы, в каком именно порядке строки хранятся, ему важно в каком порядке сервер их выдаёт (вообще-то разница есть, но она влияет только на быстродействие сервера). Сделай ID в строках в нужном порядке и используй ORDER BY (select id, field1, field2,... from my_table order by id) - сервер будет выдавать тебе строки в нужном тебе порядке.

ilan
21-07-2003, 11:08
а вот как *Сделай ID в строках в нужном порядке ? я, собственно про это и спросил....:)

Пример: Нужно чтобы строка с данными test1 * * test2 выводилась второй. всегда.

id * *field_1 * field_2

1     data1    data2
2 * * data1 * *data2
3 * * data1 * *data2
4 * * test1 * * test2
5 * * data1 * *data2

Если у одной строки меняешь ID (допустим 4 на 2) - то он совпадет с уже существующим (последствия я не знаю).

Megabyte
21-07-2003, 14:25
Ну, в зависимости от ограничений, навешанных на таблицу, сервак может позволить существовать двум строкам с одинаковым ID, а может и не позволить (органичение уникальности по ID). Если не даёт - меняешь у строки с ID=2 поле ID на любое неиспользуемое (например 0), потом у строки 4 делаешь ID=2, потом ID=0 меняешь на ID=4. Стандартная задача перестановки двух переменных. Вот SQL-код:

update my_table set ID=0 where ID=2;
update my_table set ID=2 where ID=4;
update my_table set ID=4 where ID=0;

ilan
21-07-2003, 14:56
Спасибо.

Именно это мне и нужно было. И еще, похоже, надо будет автоинкремент убрать с поля ID.

видимо надо купить книгу по азам программирования. функции сортировки и все такое. Может, кстати, подскажешь чего-нибудь стоящее?

Megabyte
22-07-2003, 11:05
И еще, похоже, надо будет автоинкремент убрать с поля ID.
Я провёл опыт - автоинкремент ему не мешает, он только требует уникальности и всё, тот SQL-код для изменения ID-шников прекрасно работает и при автоинкремент не сбивается. Так что можешь его оставить.
А по поводу книг... Сам я учил программирование ещё на Партнёре-0101 и Spectrum-е, сейчас книги по программированию для начинающих не читаю и ничего посоветовать не могу. Но если у тебя есть доступ в Инет, поищи на Яндексе или Гугле что-нибудь типа "программирование для начинающих" или что-нибудь подобное




© OSzone.net 2001-2012