Sql server Sql Server更新中的查询

Sql server Sql Server更新中的查询,sql-server,sql-update,Sql Server,Sql Update,我有两张桌子 表A: name empid city ----------------------------------- Joesph Morgan JM2345 New york 表B: name -------------- Morgan, Joseph 现在我想在B中添加一列,其中包含empid 我本可以根据名称列加入表,但格式上的差异让我很难 首先,我将表B的名称更改为firstname-lastname格式,并在B中新创建的列emp

我有两张桌子

表A

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

name 
--------------
Morgan, Joseph
现在我想在B中添加一列,其中包含
empid

我本可以根据名称列加入表,但格式上的差异让我很难

首先,我将表B的名称更改为firstname-lastname格式,并在B中新创建的列empid中获取数据

但我不想改变数据的格式

我采取了以下步骤

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

请告诉我名称列保持原样的方法。

如果我正确理解您的情况,您希望a表中的所有当前empID都位于B表的新列中吗

ALTER TABLE  B
ADD empID varchar(10) NULL
因此,您在表B中创建了一个新列,它允许NULL(目前)

这将在表B.empid中插入A.empid中的所有值

希望这有帮助

试试这个

更新的查询

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)
)

修复您的数据。在一个表中添加外键和/或定义empid,并在其他表中使用它而不是名称。否则你只是在等待问题的发生。
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)
)