2

假设我有下表:

App   owner   owner_id
______________________
1     John    NULL
2     Jack    000123
3     John    NULL
4     April   000124
5     John    NULL
6     April   000124
7     John    000123
8     Ash     NULL
9     Ash     NULL
10    Ash     NULL

如果我需要更新 John 和 Ash 的信息,有没有办法通过只输入一次信息owner_id来更新表中每次出现的每个所有者的信息? 我必须为大约 1000 个所有者执行此操作,但是我正在查看大约 10000 个空白的重复数量。owner_id
owner_id

我没有适当的权利来重组或拆分表格。

4

1 回答 1

4

如果我没有误解你的问题,那就是:

update owners_table set owner_id = '000001' where owner = 'john'
update owners_table set owner_id = '000002' where owner = 'ash'

这将owner_id000001所有者所在的每一行John以及000002所有者所在的每一行中设置Ash

当您有很多所有者时,它只是更多的复制和粘贴,因为您必须为每个所有者创建一个查询。


另一种方法是创建一个只有所有者和他的新 id 的临时表:

owner   newid
--------------
John    000001
Ash     000002

您可以将成百上千的所有者和他们的新所有者输入owner_ids到表中。

然后,您可以使用以下查询一次在主表中更新它们:

UPDATE owners_table 
INNER JOIN ownertmp ON owners_table .owner = ownertmp.owner 
SET owners_table.owner_id = [ownertmp].[newid];

之后,您可以再次删除临时表 - 只需要运行查询。

于 2013-06-28T16:37:30.133 回答