Страница 1 из 2

Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 11:27
qwertyuiop
Требуется физически поменять местами две строки... Как это сделать и возможно ли это в mysql?

Структура таблицы:
-- --------------------------------------------------------

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `gallery` (
  `id` int(10) unsigned NOT NULL,
  `file_name` varchar(100) NOT NULL,
  `file_width_thumb` varchar(5) NOT NULL,
  `file_height_thumb` varchar(5) NOT NULL,
  `picture_theme` varchar(10) NOT NULL,
  `picture_name` varchar(30) NOT NULL,
  `picture_info` tinytext,
  `picture_describe` text,
  `picture_size` char(9) NOT NULL,
  `picture_year` year(4) NOT NULL,
  `picture_lyric` text,
  `picture_added` varchar(19) NOT NULL,
  `picture_modified` varchar(19) default NULL,
  `sort` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Нужно что-то типа ALTER TABLE `gallery` ORDER BY RAND() , но только с конкретными строками!

Заранее спасибо!

Re: Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 11:39
Игорь Акопян
а смысл?
для определённого порядка существует ORDER BY в запросе. Если очень хочется чтобы всё шло по порядку ID но где-то накосячилось - можно ID поменять, ы?

Re: Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 11:59
qwertyuiop
Напрашивается два вопроса:
1. Каким образом это реализовать с помощью ORDER BY?
2. И как можно поменять ID?

Смысл в том,чтобы картинка под ID=7 встала на место картинки под ID 37,которая идёт сразу же за картинкой ID=7 )))
Запутал? То-то же...

Re: Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 12:37
Duncon
Заводишь доп. поле id или pos, неважно как назвать и выводишь картинки согласно нумерации в этом поле, естественно нумерацию придёться сдвигать при изменении позиции. Двигать записи не интересно слишком большой объём работы (хотя можно и так).

Re: Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 13:20
qwertyuiop
Спасибо за помощь! Да... Видимо без дополнительного поля не обойтись!
Двигать записи не интересно слишком большой объём работы (хотя можно и так).
Но в идеале хотелось бы одной командой и напрямую в самой таблице их поменять!
А есть способ двигать эти самые записи?

Re: Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 14:29
Duncon
Удаляешь все записи, пишеш нужную последовательность

Re: Как поменять местами строки в таблице?

Добавлено: 16 янв 2009, 15:46
qwertyuiop
Неее... Слишком уж кардинально! ;-)

Re: Как поменять местами строки в таблице?

Добавлено: 19 янв 2009, 11:00
Игорь Акопян
если "порядок" - это некая экспертная функция, которая периодически выполняется, то доп. числовое поле, с интервалом к примеру 100, для вставки в середину.

Если это разовое исправление - можно просто ID поменять... Как - зависит от сервера ;)

Re: Как поменять местами строки в таблице?

Добавлено: 19 мар 2009, 15:25
Юлия_shell
Alter table и внести нужные данные в обе строки

Re: Как поменять местами строки в таблице?

Добавлено: 24 мар 2009, 13:54
alexander.spb
Duncon писал(а):Удаляешь все записи, пишеш нужную последовательность
если нет ORDER BY, то, вообще говоря, два одинаковых SELECT'a могут дать result set, в которых порядок следования строк разный.