Похоже, что какого-то красивого решения нет. Если вас устроит блокировка при вставке, то можно сделать как-то так:
LOCK TABLES `test_sort` AS t1 WRITE, `test_sort` WRITE;
INSERT INTO `test_sort` (`title`, `order`)
SELECT 'YOUR_TEXT_HERE', IFNULL(MAX(`order`), 0) + 1 FROM `test_sort` AS t1;
UNLOCK TABLES;
схемаCREATE TABLE `test_sort` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`order` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
Т.е. при вставке нового значения выбирается максимальное значение order и добавляется +1.
Если уникальность этого порядка не очень то и важна, ну подумаешь, то можно и без блокировки.
А поменять приоритет двух записей зная только их id можно так:
UPDATE test_sort AS t1
JOIN test_sort AS t2 ON ( t1.id = 1 AND t2.id = 4 )
SET
t1.order = t2.order,
t2.order = t1.order;