如何在SQL Server中更新和删除副本?
我有两个表Add(父表)和AddXref(子表),希望删除父表中的重复记录,同时更新子表中的记录。在AddXref表中,这两条记录应该有来自Add表的AddId中的任何一条。我尝试使用basic update语句,但它不起作用。如何更新AddXref表 我的尝试: 到目前为止,我已经编写了这个查询,但我仍在思考下一步该怎么做如何在SQL Server中更新和删除副本?,sql,sql-server,database,sql-update,Sql,Sql Server,Database,Sql Update,我有两个表Add(父表)和AddXref(子表),希望删除父表中的重复记录,同时更新子表中的记录。在AddXref表中,这两条记录应该有来自Add表的AddId中的任何一条。我尝试使用basic update语句,但它不起作用。如何更新AddXref表 我的尝试: 到目前为止,我已经编写了这个查询,但我仍在思考下一步该怎么做 Update AddXref name SET a.AddId=b.AddId FROM AddXref a INNER JOIN Add b ON a.AddId = b
Update AddXref name
SET a.AddId=b.AddId
FROM AddXref a
INNER JOIN Add b ON a.AddId = b.AddId
WHERE b.AddId = ( Select Top 1 ax.Addid from Add ax
INNER JOIN Add ax1 on
ax.AddressMain = a.AddressMain and
ax.city = a.city and
ax.Country = a.Country and
ax.State = a.State and
ax.ZipCode = a.ZipCode);
| AddId | AddressMain | City | Country | State | ZipCode |
|--------|--------------|---------|---------|---------|------------|
| 8CA25D | 1234 Main St | Antioch | USA | Florida | 60002-9714 |
| 5T7YTR | 1234 Main St | Antioch | USA | Florida | 60002-9714 |
| AddXrefId | AddressId | IndividualId | InstitutionId |
|-----------|-----------|--------------|---------------|
| 822145 | 8CA25D | 7652ER | NULL |
| 435902 | 5T7YTR | NULL | NA1043 |
| AddXrefId | AddressId | IndividualId | InstitutionId |
|-----------|-----------|--------------|---------------|
| 822145 | 8CA25D | 7652ER | NULL |
| 435902 | 8CA25D | NULL | NA1043 | --Output either "8CA25D" or "5T7YTR" any one of it
首先收集重复数据
select AddressMain, City, Country, State, ZipCode, min(addId) as minID, Max(addId) as MAxID
INTO #tmpData
from add
group by AddressMain, City, Country, State, ZipCode
第二次更新子表
Update AddXref
SET a.AddId=b.MaxID
FROM AddXref a
INNER JOIN #tmpData b ON a.AddId = b.MinID -- you can use maxId too if you want.
第三,从父项中删除重复记录
DELETE FROM Add where AddId IN (Select MinID FROM #tmpData)
此代码未经测试。此问题有点不清楚。你到底想达到什么目的?到目前为止你试过什么?您是否正在尝试根据第一个表中的匹配项更新第二个表?哪些领域?也许可以举一个前后数据的例子。很可能您无法用一条语句完成所有操作。请使用group by获得min和max addid,并首先更新child,然后从家长处删除。(假设child将有FK,而您只有2条相同的记录)@SteveShipway在上述情况下,我必须删除“添加”中的任何一条记录Add表格中剩余的表格和记录应为update ADDREF.AddId column@AJP中的两条记录update语句不适用于某些具有类似结构的表格。还有别的办法解决这个问题吗?