инверсия записей в таблице с помощью sql запроса

sniper_9

Новичок
инверсия записей в таблице с помощью sql запроса

Добрые люди скажите пжлст, а возможно с помощью одного sql запроса инвертировать две записи в таблице. Поля: id, string_value, order_id. Инвертировать надо по значениям order_id. Заранее спасибо.
 

Leshas0

Новичок
sniper_9
инвертировать - это типа было 1, 2, 3, а нужно, чтобы стало 3, 2, 1, так?
 

Zetruger

ivan.chistyakov.name
sniper_9
инвертировать - это типа было 1, 2, 3, а нужно, чтобы стало 3, 2, 1, так?
хе хе это слишком просто и решается простым ORDER BY ... DESC

я так понял что нужно сделать из этого

id....string_value....order_id
----------------------------------
1....Lalala....1
2....BlaBla....2
3....qweqwe....3
4....bombom....4


это

id....string_value....order_id
----------------------------------
1....Lalala....1
2....BlaBla....3 <--- одним запросом поменять местами
3....qweqwe....2 <--- значиния одной колонки в 2-х строках
4....bombom....4
 

Beavis

Banned
интересно, что в этом случае значит слово "инвертировать"))
 

sniper_9

Новичок
да. мне нужно реализовать возможность менять порядковый номер выводимых записей. то есть хочу допусти чтоб 15 запись стала седьмой либо просто местами записи поменять с поправкой их sort_id соответственно.

не обязательно одним, но очень интересно узнать.

-~{}~ 19.07.07 16:37:

база mysql
 

Wicked

Новичок
Селектом достаются значения primary key (pk) для обеих записей.
Затем делается 2 апдейта:
set sort_id = $sord_id1 where pk = $pk2;
set sort_id = $sord_id2 where pk = $pk1;

всё.
 

asm

Пофигист
Если order_id уникальный и извесны значения для замены то:
Код:
UPDATE table SET order_id = IF(order_id = ID1, ID2, ID1) WHERE order_id IN(ID1, ID2)
 

Zetruger

ivan.chistyakov.name
UPDATE table SET order_id = IF(order_id = ID1, ID2, ID1) WHERE order_id IN(ID1, ID2)
ну MySQL с какой-то версии поддерживает подзапросы, так что теоретический можно

UPDATE table SET order_id = IF(order_id = ID1, (SELECT ID2 ...), (SELECT ID1 ...)) WHERE order_id IN(ID1, ID2)
 

SiMM

Новичок
UPDATE table SET order_id = $order_id1+$order_id2-order_id WHERE order_id IN ($order_id1,$order_id2)
 
Сверху