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

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

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

меня интересует, можно ли выбрать 2 записи и поменять их значения местами в 1 запросе?
надо быть внимательнее к ответам. (попробуйте по приколу предложенный вариант).
...
Рейтинг: 0 / 0
Как поменять записи в таблице местами?
    #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
Как поменять записи в таблице местами?
    #35149178
xternalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем за помощь, вопрос более не актуален. добавил еще 1 поле `position` которое задает порядок размещения элементов и воспользовался примером mikosoft
...
Рейтинг: 0 / 0
Как поменять записи в таблице местами?
    #35149739
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xternalxдобавил еще 1 поле `position`если записей в таблице много, то, возможно, есть смысл сделать индекс на это поле.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как поменять записи в таблице местами?
    #38383154
Pilout
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как можно реализовать такую ситуацию! надо что бы например строка с id 53 переместилась на место строки id 1, и при этом строка id 1 сместилась на второе место? Подобную ситуацию можно увидеть на сайтах объявлений, когда человек за определенную сумму перемещает объявление на первое место в списке.
...
Рейтинг: 0 / 0
Как поменять записи в таблице местами?
    #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
Как поменять записи в таблице местами?
    #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
Как поменять записи в таблице местами?
    #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
Как поменять записи в таблице местами?
    #38383174
Pilout
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112куда в этом скрипте вставлятьпропущено...


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

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


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