Мускуль - кто посоветует.

malls
На сайте с 08.08.2005
Offline
255
529

Короче в базе есть:

id / name / family / ...

name и family перепутаны местами, начиная с определенной записи. т.е. при id > N

каким запросом исправить?

ЗЫ: Excel не предлагать! :)

SM
На сайте с 01.02.2008
Offline
17
#1

update table set table.name=table.family, table.family=table.name where table.id>N

-
На сайте с 07.12.2005
Offline
97
-K-
#2
sergey.m:
update table set table.name=table.family, table.family=table.name where table.id>N

В name - запишется значение family, а затем в family запишется значение name (уже замененное family) - в итоге оба поля со значением family

malls
На сайте с 08.08.2005
Offline
255
#3
-K-:
В name - запишется значение family, а затем в family запишется значение name (уже замененное family) - в итоге оба поля со значением family

Ага! Там как-то через ALTER надо - но как я не вкуриваю.

N
На сайте с 06.05.2007
Offline
419
#4

malls издевается.

простой логичный и переносимый способ - это создать третью колонку и использовать ее в качестве временного хранилища.

но при желании много и других. вот я нагуглил http://beerpla.net/2009/02/17/swapping-column-values-in-mysql/

Кнопка вызова админа ()
SP
На сайте с 20.05.2008
Offline
56
#5

Решение "в лоб":


ALTER TABLE `test` ADD COLUMN buf Varchar(50);
UPDATE `test` SET buf=family, family=name, name=buf WHERE id>N;
ALTER TABLE `test` DROP COLUMN buf;
Делаю небольшие заказы на php, perl, js/ajax, delphi; парсеры, простые сайты с админкой, установка\настройка sape, wordpress и др. Мой Блог (http://www.seoproger.ru)
dkameleon
На сайте с 09.12.2005
Offline
386
#6
malls:
Ага! Там как-то через ALTER надо - но как я не вкуриваю.

альтером добавить временное поле в таблице и перекинуть через него. :)

ПС. Если это числовые однотипные значения, то можно перекидывать и без буферной колонки :)

Дизайн интерьера (http://balabukha.com/)
malls
На сайте с 08.08.2005
Offline
255
#7
netwind:
malls издевается.
простой логичный и переносимый способ - это создать третью колонку и использовать ее в качестве временного хранилища.

😮😮😮

ее же потом удалять придется!

netwind:
но при желании много и других. вот я нагуглил http://beerpla.net/2009/02/17/swapping-column-values-in-mysql/

А вот это:

UPDATE table SET name=(@temp:=name), name = family, family = @temp WHERE id=1;

действительно:

the most elegant and clean solution

спасибо! жаль плюсики не ставяться...

xant
На сайте с 17.12.2008
Offline
65
#8

Проще через переменные сделать

update table set table.name=table.family, table.family=@value where table.id>N
AND @value:=table.name

xant добавил 07.03.2009 в 18:55

а, ну или так как malls написал.

Эксклюзивные сайты и веб-2.0 приложения под ключ. Дорого.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий