sql - скопировать строку и вставить её изменив одно значение

Тема в разделе "Базы данных", создана пользователем okyrok, 1 сен 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. okyrok

    okyrok Создатель

    Регистр.:
    14 июл 2014
    Сообщения:
    23
    Симпатии:
    10
    sql - скопировать строку и вставить её изменив одно значение
    Ищу наиболее простой, комфортный способ.
    Реально ли на чистом SQL ??, если нет - воспользоваться Excel ?! благодарю.
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.036
    Т.з. подробнее...
    К примеру, можно такое:

    Код:
    UPDATE `table` SET `view` = `view` + 1;
     
  3. okyrok

    okyrok Создатель

    Регистр.:
    14 июл 2014
    Сообщения:
    23
    Симпатии:
    10
    1. есть таблица, столбцы следующие: естественно id, ... name, ну и допустим string1, string2
    2. в ней строкa: 1, vasya, petrov, 22
    3. нужно:
    • a. эту строку не изменять
    • б. добавить в эту же таблицу строку 1, vasya, ivanov, 22
    выборкойй то понятно
    Код:
    SELECT * FROM `table` WHERE name = vasya
    -в этой выборке у всех заменить бы string1 на ivanov, типа как тут
    Код:
    UPDATE `table` SET `string1` = ivanov;
    -вставить
    -профит)

    ps Хреновато, наверно, написал
    pps и, Горбушка, пора статус менять)
     
  4. AdamK

    AdamK Создатель

    Регистр.:
    10 мар 2009
    Сообщения:
    13
    Симпатии:
    3
    Можно так:
    1. Создать временную таблицу:
    Код:
    create table tmp_table as select id,.., 'ivanov' where name = 'ivanov'
    2. Вставить в целевую таблицу
    Код:
     insert into table select * from tmp_table
    3. Удалить временную таблицу
    Код:
     drop table tmp_table
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.402
    Симпатии:
    1.183
    o_O Зачем временную то создавать?

    PHP:
    INSERT INTO `tableSELECT idname'ivanov'string2 FROM `tableWHERE name 'vasya'
    В более сложном случае:
    PHP:
    INSERT INTO `table` (namestring1string2SELECT name'ivanov'string2 FROM `tableWHERE `name` = 'vasya'
    INTO `table` (name, string1, string2) - перечисляем поля, для сохранения автоинкремента id, иначе id будет повторятся
    SELECT name, 'ivanov', - помимо выборки полей таблицы мы можем жестко прописать SELECT строки, как вы понимаете она будет одинаковой для всех выбранных row
     
    Последнее редактирование: 3 сен 2014
  6. AdamK

    AdamK Создатель

    Регистр.:
    10 мар 2009
    Сообщения:
    13
    Симпатии:
    3
    Можно без временной конечно. С временной таблицей есть возможность посмотреть на промежуточный результат.

    У вас, кстати, ошибка в запросе. Правильно будет так:
    PHP:
     INSERT INTO `table` (namestring1string2SELECT name'ivanov'string2 FROM `tableWHERE `name` = 'vasya'
     
    Последнее редактирование: 3 сен 2014
  7. Kiramoff

    Kiramoff Создатель

    Регистр.:
    7 мар 2013
    Сообщения:
    31
    Симпатии:
    13
    TC: запрос подсказали правильно в обоих вариантах. Учитывайте только, что при большом объеме информации время выполнения первого и второго запросов будет отличаться. Если таблица небольшая - то абсолютно без разницы
     
Статус темы:
Закрыта.