Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.07.2014, 11:35   #1
Till
 
Регистрация: 23.06.2008
Сообщений: 8
По умолчанию Замена в mysql

В общем дело такое, решил по извращаться возник такой вопрос, можно ли обновить данные в таблице таким образом, есть индентификаторы
23
32
54
22
и нужно их изменить на
45
56
24
13
просто таких id около 500
П.С. лень писать на пхп, решил помудровать с запросами
Till вне форума
Старый 02.07.2014, 12:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В чем проблема? Делается на раз два:
1) Открываешь Экзель.
2) В первую колонку ставишь update таблица set id=
3) Во вторую ставишь эти свои цифры
4) В последнюю - where то что заменять.
5) Потом все копируешь в блохнот.
Они ведь у тебя в колоночку записаны?
Безымянный.jpg
Таким образом получаешь скрипт, который потом выполняешь пакетно
I'm learning to live...
Stilet вне форума
Старый 02.07.2014, 12:45   #3
Till
 
Регистрация: 23.06.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
В чем проблема? Делается на раз два:
1) Открываешь Экзель.
2) В первую колонку ставишь update таблица set id=
3) Во вторую ставишь эти свои цифры
4) В последнюю - where то что заменять.
5) Потом все копируешь в блохнот.
Они ведь у тебя в колоночку записаны?
Вложение 68984
Таким образом получаешь скрипт, который потом выполняешь пакетно
хех, спасибо, кстати, хитро придумано через эксель
Till вне форума
Старый 02.07.2014, 12:50   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Могут быть ситуации с заменой 13 на 15 и 15 на 13. Не? Если возможно, то три раза отмерь прежде чем отрезать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 02.07.2014, 13:23   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хитро придумано через эксель
Хитро не хитро, зато при наличии тучи данных можно быстро сварганить скриптик. Таблицей то проще размножить в колонку команду. Я постоянно пользуюсь таким методом, если вдруг нужно. Бывает приходится превращать так около 100 000 строк данных полученных из другого источника.
I'm learning to live...
Stilet вне форума
Старый 02.07.2014, 16:08   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

На самом деле правильно и безопасно это делается одним запросом:
Код:
update
  my_table
set
  id = case
    when 23 then 45
    when 32 then 56
    when 54 then 24
    when 22 then 13
  else
    id
  end;
В SQL всё хорошее и безопасное всегда делается одним запросом.
Vapaamies вне форума
Старый 02.07.2014, 16:19   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
В SQL всё хорошее и безопасное всегда делается одним запросом.
c 5-ю "инлайн" подзапросами )
eval вне форума
Старый 02.07.2014, 16:54   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
c 5-ю "инлайн" подзапросами )
Ну они то завуалированы, так что можно считать что запрос один.
I'm learning to live...
Stilet вне форума
Старый 02.07.2014, 17:41   #9
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
c 5-ю "инлайн" подзапросами )
Да, именно так. В общем случае считается, что подзапросы ничего не стоят, поскольку в СУБД имеется оптимизатор. Для взаимопонимания с ним нужно смотреть план.
Vapaamies вне форума
Старый 02.07.2014, 17:50   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

select * from x where exists(select * from y where x.name=y.name)
оптимизатор "заинлайнит"?
eval вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows+Apache+PHP+MySQL: не работает расширение MySQL. Пепел Феникса Софт 10 15.04.2012 14:10
есть адреси в mysql нужно поиска с AJAX for mysql orter PHP 1 24.09.2010 10:24
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ Pblog Обсуждение статей 0 16.08.2009 16:00
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52