Втавка из одной таблицы в другую

Тема в разделе "Базы данных", создана пользователем 2pick, 24 май 2009.

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

    2pick Постоялец

    Регистр.:
    15 мар 2009
    Сообщения:
    102
    Симпатии:
    29
    Как вставить данные из одной таблицы в другую?
    INSERT INTO table1 SELECT * FROM table2
    не канает, т.к. в обоих таблицах присутствует графа id типа auto_incriment
    вставить надо короче говоря в первую таблицу из 2-й, но без id (чтоб значения присвоились уникальные для таблицы1)
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    INSERT INTO table1 SELECT NULL, field1, field2 ... FROM table2;

    На место id ставим NULL и перечисляем поля.
     
    2pick нравится это.
  3. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Чтобы избежать неоднозначностей в названиях , лучше использовать следующий шаблон:

    Код:
     INSERT INTO table1 (field1, field2...) SELECT ToField1, ToField2 ... FROM table2;
     
  4. Internal

    Internal Писатель

    Регистр.:
    10 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    Не прокатит. Насколько я понял - у автора в первой таблицы поле id есть первичным ключом(содержит уникальные значения). Поэтому null нельзя вставлять.

    insert into table1 (id, field1, ...) select rownum+(значение максимального id из 1-й таблицы), field2, ... from table2
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Хочешь поспорить?

    Если автоинкрементному полю передать NULL, то в поле запишеться текущее значение счётчика.

    Иди читай маны, прежде чем умничать :D
     
  6. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Не прокатит как раз присвоение значения автоинкрементному полю, поле id в этом примере вообще не надо указывать.
     
  7. mikemilj

    mikemilj Постоялец

    Регистр.:
    31 янв 2009
    Сообщения:
    103
    Симпатии:
    4
    поддерживаю, idшник сам должен сгенерироваться, хотя....
    смотря какая база, если Oracle то нужно явно указывать sequence
     
  8. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    в том то и дело что id надо просто не использовать - в INSERT INTO tbl (fld1,fld2... - должно быть опущено это поле, и всё копирование пройдет скорее всего дублирование ключа было
     
  9. Mr.U

    Mr.U Создатель

    Регистр.:
    9 мар 2009
    Сообщения:
    27
    Симпатии:
    1
    перечисляешь поля из первой таблицы кроме, и из второй. в обоих случаях не нужно прописывать ид. все
     
Статус темы:
Закрыта.