2013-06-19 3 views
1

У меня есть две таблицы,Как вставить данные из одной таблицы в таблицу пыльников?

tblA(id, num, col1, col2, col3), 
tblB(col1, col2, col3) 

col1, col2 и col3 одинаковы в обеих таблицах. Теперь у меня есть следующий код:

declare @num...(same type as num) 

insert into tblA 
select @num, * from tblB 

id in tblA - это колонка с отступом.

Но я получил следующую ошибку: Название столбца или количество заданных значений не соответствует определению таблицы.

Может ли кто-нибудь помочь мне исправить это?

+0

Это должно работать. Он ожидает 4 столбца, и это то, что вы поставляете. Вы положительный 'id' на самом деле столбец' IDENTITY'? Demo '' CREATE TABLE tblA (ID INT IDENTITY, num INT, col1 INT, col2 INT, col3 INT); CREATE TABLE tblB (col1 INT, col2 INT, col3 INT); INSERT INTO tblA SELECT 1, * FROM tblB'' –

+0

Пожалуйста, поставьте 'CREATE TABLE' для обеих таблиц. Также любые триггеры на столе? –

+0

Да. Это. Вот определение, [id] [числовое] (18, 0) ИДЕНТИФИКАЦИЯ (1,1) НЕ ДЛЯ РЕПЛИКАЦИИ НЕ НУЛЬТА – GLP

ответ

2

Просто INSERT с помощью именованных столбцов, и пропустить столбец идентификаторов - она ​​будет заполнена автоматически:

INSERT INTO tblA (num, col1, col2, col3) SELECT @Num, col1, col2, col3 FROM tblB 
+0

Yeh. Оно работает. Благодарю. – GLP

+0

@GLP - В этом случае ваше описание схемы таблиц должно быть неверным. У 'B' есть дополнительные столбцы, которые вы не упомянули? –

0

Я думаю, что сообщение об ошибке довольно поясняющий: ВЫБОР и INSERT должен иметь такое же количество колонны.

в вашем случае

declare @num...(same type as num) 

insert into tblA(num,col1, col2, col3) 
select @num,col1, col2, col3 from tblB 

если ключ на tblA не генерируется автоматически, вы должны рассмотреть его в ВСТАВКА

подробнее here

3

Можете ли вы попробовать предоставление колонки также именуемые также:

declare @num...(same type as num) 

insert into tblA(num, col1, col2, col3) 
select @num, * from tblB 

Пожалуйста, не беспокойтесь о столбце идентификации, поскольку он будет заполнен автоматически.

0

Это просто зависит от вашего имени столбца они должны быть одного типа:

insert into tblA(col1,col2,col3) 
select col1,col2,col3 
from tblB 
Смежные вопросы