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

Статус
В этой теме нельзя размещать новые ответы.

2pick

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

На место id ставим NULL и перечисляем поля.
 
Чтобы избежать неоднозначностей в названиях , лучше использовать следующий шаблон:

Код:
 INSERT INTO table1 (field1, field2...) SELECT ToField1, ToField2 ... FROM table2;
 
INSERT INTO table1 SELECT NULL, field1, field2 ... FROM table2;
На место id ставим NULL и перечисляем поля.
Не прокатит. Насколько я понял - у автора в первой таблицы поле id есть первичным ключом(содержит уникальные значения). Поэтому null нельзя вставлять.

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

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

Иди читай маны, прежде чем умничать :D
 
insert into table1 (id, field1, ...) select rownum+(значение максимального id из 1-й таблицы), field2, ... from table2

Не прокатит как раз присвоение значения автоинкрементному полю, поле id в этом примере вообще не надо указывать.
 
поддерживаю, idшник сам должен сгенерироваться, хотя....
смотря какая база, если Oracle то нужно явно указывать sequence
 
в том то и дело что id надо просто не использовать - в INSERT INTO tbl (fld1,fld2... - должно быть опущено это поле, и всё копирование пройдет скорее всего дублирование ключа было
 
перечисляешь поля из первой таблицы кроме, и из второй. в обоих случаях не нужно прописывать ид. все
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху