2016-05-24 6 views
1

Я новичок в SQL Я застрял в этом. У меня есть две таблицы Таблица 1-> 4 Столбцы Таблица 2-> 3 колонки (2 одинаковые имена столбцов, как в таблице 1)Добавить данные из одной таблицы в другую

Таблица 1

UserID Email Name  Pass 
-------------------------------- 
xyz  [email protected] xyz  xyz 
123  [email protected] abc  123 

Таблица 2

EmpID Email Name  
----------------------- 
xyz  [email protected] xyz 

Результат-Table2

EmpID Email Name  
----------------------- 
xyz  [email protected] xyz  
     [email protected] abc 

Стол выше поменьше, у меня есть стол с более чем 60 колоннами. Я хочу, чтобы метод, который можно скопировать общие столбцы из таблицы 1 в таблице 2.

+0

Что вы подразумеваете под копией? Можете ли вы привести более конкретный пример? Как столбцы таблицы 2 относятся к таблице 1? Число строк в двух таблицах одинаково? –

+0

Какие СУБД вы используете? –

+0

Я изменю свой вопрос. –

ответ

0

использовать INNER JOIN, чтобы соответствовать связанные столбцы:

SELECT Table1.*, Table2.* 
FROM Table1 
INNER JOIN Table2 
ON Table1.UserID = Table2.EmpID AND Table1.Email = Table2.Email AND Table1.Name = Table2.Name 
+0

Проблема в том, что у меня почти 30 столбцов в таблице 2, поэтому писать каждое имя столбца в задании набора непросто. Можно ли это сделать автоматически? –

+0

Возможно, но не так легко в SQL. Если это одноразовое задание, я просто укушу пулю и укажу 30 столбцов в соединении, иначе вы можете использовать ORM Python или аналогично лучше обрабатывать столбцы. –

0

Глядя на данные, вы предоставили
Вы можете использовать обновления для копировальные данные

Update table2 
inner join table1 on table1.userID = table2.EmpID 
set email = table1.email, 
    name = table1,name ; 
+0

Проблема в том, что у меня почти 30 столбцов в таблице 2, поэтому писать каждое имя столбца в задании набора непросто. Можно ли это сделать автоматически? –

+0

Это предложение для копирования. Имейте в виду, что в некотором mysql id, таком как toad, столбец предлагается самим ide, тогда проблема для типа является незначительной .. для типа, который я думаю, является проблемой, связанной с редактированием/ide инструменты, которые вы используете .. .. Надеюсь, мой ответ и мое предложение будут вам сущими. – scaisEdge

0

это генерирует вставку из общих колонок.

declare 
@sql varchar(max), 
@Columnlist varchar(max) 


SELECT @Columnlist = coalesce(@Columnlist+'], ','') + '['+x.column_name 
FROM INFORMATION_SCHEMA.COLUMNS x 
join INFORMATION_SCHEMA.COLUMNS y 
on x.column_name = y.column_name 
and y.TABLE_NAME = 'table2' 
WHERE x.TABLE_NAME = 'table1' 



set @sql ='select '[email protected]+'] from table1' 

insert into table2 
exec(@sql) 
Смежные вопросы