Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как поменять записи в таблице местами? / 14 сообщений из 14, страница 1 из 1
21.02.2008, 18:37:21
    #35148739
xternalx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
Собственно, субж, есть таблица, в которой хранятся какие то данные. Из этих данных строится некая структура. Порядок элементов структуры зависит от поля `id` таблицы. Нужно реализовать возможность "поднимать" и "опускать" элементы структуры между собой.

Такую операцию можно выполнить в 1 запрос? если можно, то как?
...
Рейтинг: 0 / 0
21.02.2008, 18:52:00
    #35148788
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
Код: plaintext
UPDATE mytable SET id= 20 + 21 -id WHERE id IN ( 20 , 21 )
оно?
...
Рейтинг: 0 / 0
21.02.2008, 18:52:54
    #35148795
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
miksoft
Код: plaintext
UPDATE mytable SET id= 20 + 21 -id WHERE id IN ( 20 , 21 )
оно?правда, если на поле id наложен уникальный индекс, то, наверное, не прокатит.
...
Рейтинг: 0 / 0
21.02.2008, 19:23:21
    #35148887
xternalx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
как обновлять поля в записях - я знаю. Спасибо :)

меня интересует, можно ли выбрать 2 записи и поменять их значения местами в 1 запросе?
...
Рейтинг: 0 / 0
21.02.2008, 19:29:09
    #35148902
andy_iaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
xternalxкак обновлять поля в записях - я знаю. Спасибо :)

меня интересует, можно ли выбрать 2 записи и поменять их значения местами в 1 запросе?
надо быть внимательнее к ответам. (попробуйте по приколу предложенный вариант).
...
Рейтинг: 0 / 0
21.02.2008, 19:38:42
    #35148927
xternalx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
Прошу прощения. У меня поле `id` является ключевым и автоинкрементриуемым. Только что попробовал предложенный вариант, выдает ошибку:
Код: plaintext
 SQL Error: Duplicate entry '3' for key  1 
запрос:
Код: plaintext
UPDATE `struct` SET id= 1 + 3 -id WHERE id IN ( 1 , 3 )
...
Рейтинг: 0 / 0
21.02.2008, 22:53:54
    #35149178
xternalx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
спасибо всем за помощь, вопрос более не актуален. добавил еще 1 поле `position` которое задает порядок размещения элементов и воспользовался примером mikosoft
...
Рейтинг: 0 / 0
22.02.2008, 10:44:18
    #35149739
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
xternalxдобавил еще 1 поле `position`если записей в таблице много, то, возможно, есть смысл сделать индекс на это поле.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
31.08.2013, 14:50:17
    #38383154
Pilout
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
А как можно реализовать такую ситуацию! надо что бы например строка с id 53 переместилась на место строки id 1, и при этом строка id 1 сместилась на второе место? Подобную ситуацию можно увидеть на сайтах объявлений, когда человек за определенную сумму перемещает объявление на первое место в списке.
...
Рейтинг: 0 / 0
31.08.2013, 15:03:35
    #38383157
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
PiloutА как можно реализовать такую ситуацию! надо что бы например строка с id 53 переместилась на место строки id 1, и при этом строка id 1 сместилась на второе место? Подобную ситуацию можно увидеть на сайтах объявлений, когда человек за определенную сумму перемещает объявление на первое место в списке.
поле дополнительное для сортировки вводят (float)
и типа этого
Код: sql
1.
2.
3.
4.
update 
t, (select sum(orderby)/2 as new_orderby from t where id in (2-а id между которыми нужно "вставить")) a
set t.orderby=a.new_orderby
where t.id=53
...
Рейтинг: 0 / 0
31.08.2013, 15:22:56
    #38383162
Как поменять записи в таблице местами?
qwerty112PiloutА как можно реализовать такую ситуацию! надо что бы например строка с id 53 переместилась на место строки id 1, и при этом строка id 1 сместилась на второе место? Подобную ситуацию можно увидеть на сайтах объявлений, когда человек за определенную сумму перемещает объявление на первое место в списке.
поле дополнительное для сортировки вводят (float)
и типа этого
Код: sql
1.
2.
3.
4.
update 
t, (select sum(orderby)/2 as new_orderby from t where id in (2-а id между которыми нужно "вставить")) a
set t.orderby=a.new_orderby
where t.id=53



а куда в этом скрипте вставлять float?
...
Рейтинг: 0 / 0
31.08.2013, 15:37:10
    #38383167
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
куда в этом скрипте вставлятьqwerty112пропущено...

поле дополнительное для сортировки вводят (float)
и типа этого
Код: sql
1.
2.
3.
4.
update 
t, (select sum(orderby)/2 as new_orderby from t where id in (2-а id между которыми нужно "вставить")) a
set t.orderby=a.new_orderby
where t.id=53



а куда в этом скрипте вставлять float?
это тип поля orderby
...
Рейтинг: 0 / 0
31.08.2013, 15:52:56
    #38383174
Pilout
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
qwerty112куда в этом скрипте вставлятьпропущено...


а куда в этом скрипте вставлять float?
это тип поля orderby

выдает такую ошибку #1054 - Unknown column 'byp0g_aclsfgfloat.idnum' in 'where clause'
...
Рейтинг: 0 / 0
31.08.2013, 16:29:09
    #38383189
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять записи в таблице местами?
Piloutвыдает такую ошибку #1054 - Unknown column 'byp0g_aclsfgfloat.idnum' in 'where clause'
я огорчён ... :((
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как поменять записи в таблице местами? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]