2015-03-16 2 views
0

У меня есть две таблицы.Запрос на обновление сервера Sql

Table A:

name    empid  city 
----------------------------------- 
Joesph Morgan JM2345 New york 

Table B:

name 
-------------- 
Morgan, Joseph 

Теперь я хочу, чтобы добавить столбец в B, который будет содержать empid.

Я мог бы присоединиться к таблицам на основе столбца имен, но разница в формате затрудняет для меня.

Я был первым изменением названия B таблицы, в формате Имя Фамилия и получать данные в недавно созданной EmpId колонке в B.

Но я не хочу, чтобы изменить формат данных.

Я сделал следующие шаги.

Alter Table B 
Add Empid varchar(10) 

Update table B 
set name=CONCAT(REPLACE(SUBSTRING([name], CHARINDEX(',', [name]), LEN([name])), ',', ''),' ',LEFT([name], CHARINDEX(',', [name]) - 1) 

Update table B 
set empid=A.empid 
where B.name=A.name 

Пожалуйста, предложите мне способ, которым столбец имени останется таким, какой он есть.

+0

Исправьте данные. Добавьте внешние ключи и/или определите empid в одной таблице и используйте их в других местах вместо имени. В противном случае вы просто ждете проблем. –

ответ

0

попробовать это .. FIDDLE DEMO

create table A(
name varchar(50), 
    empid varchar(50), 
    city varchar(50) 
) 
insert into A values('Joesph Morgan', 'JM2345', 'New york') 

create table B(
empid varchar(50), 
name varchar(50) 
) 
insert into B(name) values('Morgan,Joesph') 

Обновленный запрос ..

update B set B.empid=a.empid from B, A where 
A.name=(Substring(b.name, Charindex(',',b.name)+1,len(b.name)) +' '+ 
Substring(b.name, 1,Charindex(',',b.name)-1) 
) 
0

Если я правильно понял вашу ситуацию, вы хотите, чтобы все текущие empID из вашей таблицы A в новом столбце вашего B-таблицы?

ALTER TABLE B 
ADD empID varchar(10) NULL 

Таким образом, вы создали новый столбец в таблице B, что позволяет NULL (на данный момент.)

INSERT INTO B (empid) 
SELECT empid 
from A 

это будет вставить все значения из A.empid в таблице B.empID

надеюсь, что это помогает

Смежные вопросы