在 Sql 服务器更新中查询

Query in Sql Server Update

我有两个table。

Table A:

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

Table B:

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

现在我想在 B 中添加一个包含 empid.

的列

我本可以根据姓名列加入 table,但格式的差异让我很难加入。

我首先将 table B 名称更改为名字姓氏格式,并在 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-table 中的所有当前 empID 在你的 B-table 的新列中?

ALTER TABLE  B
ADD empID varchar(10) NULL

因此您在 table B 中创建了一个新列,它允许 NULL(目前)

INSERT INTO B (empid)
SELECT empid
from A

这会将 A.empid 中的所有值插入 table B.empID

希望这对您有所帮助

试试这个.. 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)
)