Скопировать таблицу в Mysql

Discussion in 'PHP' started by InfectedM, 8 Nov 2012.

  1. InfectedM

    InfectedM Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    Есть табличка ID, name, Key_type
    Данные:
    1, мандарин,2
    2, мандарин,2
    3, тыква,2

    цель: Нужно скопировать все данные по условию и вставить их в текущую таблицу, с простым копированием разобрался, но как быть если при копировании нужно изменить какие-то данные "на лету" ?

    Хочу скопировать все мандарины и поменять им тип на "3"
    Т.е рузультат должен быть такой:
    1, мандарин,2
    2, мандарин,2
    3, тыква,2
    4, мандарин,3
    5, мандарин,3



    Делаю вот так:
    Code:
    INSERT INTO таблица (поле,поле,поле)
    SELECT поле,поле,поле
    FROM таблица AS t
    WHERE таблица.Name='мандарин'
    Подскажите плиз в какую сторону копать...
    PS Нужно на чистом SQL\хранимые процедуры
     
  2. phenix1025

    phenix1025 New Member

    Joined:
    20 Oct 2012
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    INSERT INTO таблица (поле,поле,поле)
    SELECT IF(id=='3','теперь и это мандарин',поле),поле,поле
    FROM таблица AS t
    WHERE таблица.Name='мандарин'
     
  3. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,770
    Likes Received:
    881
    Reputations:
    859
    Скорее так

    INSERT INTO таблица (поле,поле,поле)
    SELECT поле,поле,IF(Key_type!='3','3',Key_type)
    FROM таблица AS t
    WHERE таблица.Name='мандарин'

    Но это только заменит все Key_type на 3 при переносе, чтобы записи с прошлыми key_type тоже остались нужно объединить их через union.

    P.S. В дороге, не могу показать окончательный запрос, ближе к вечеру, если никто не поможет.
     
    _________________________
    #3 BigBear, 9 Nov 2012
    Last edited: 9 Nov 2012