Sql 当电子邮件位于另一个表上时,如何更新表?
我想更新一些用户的信息,当他们在另一个表上有电子邮件时。但是这个查询更新了所有用户,不知道出了什么问题,你能帮我吗?谢谢,显式连接会更好吗?只是猜测,不确定这些数据中到底有什么。。。 像Sql 当电子邮件位于另一个表上时,如何更新表?,sql,sql-server,sql-update,Sql,Sql Server,Sql Update,我想更新一些用户的信息,当他们在另一个表上有电子邮件时。但是这个查询更新了所有用户,不知道出了什么问题,你能帮我吗?谢谢,显式连接会更好吗?只是猜测,不确定这些数据中到底有什么。。。 像 最后,我可以用另外一个条件来解决这个问题。结果如下: USE [ASPDryrun] GO UPDATE [dbo].[Users] SET [ID] = [IU].[PersNo], [CostCenter] = [CC].[CostCenterID], [O
最后,我可以用另外一个条件来解决这个问题。结果如下:
USE [ASPDryrun]
GO
UPDATE [dbo].[Users]
SET [ID] = [IU].[PersNo],
[CostCenter] = [CC].[CostCenterID],
[OrgUnit] = [OU].[OrgUnitID]
FROM [dbo].[Users],
join [dbo].[Import_UserData] AS [IU] on [IU].[CorporateEmail]=users.[email]
join [dbo].[CostCenters] AS [CC] on [CC].[ID] = [IU].[CostCtr]
join [dbo].[OrgUnits] AS [OU] on [OU].[ID] = [IU].[OrgUnit]
您没有任何将
dbo.Users
表与查询中的其他表关联的联接条件。也许我应该添加此条件:和[IU].[CorporateEmail]=[dbo].[Users].[Email]
Email是唯一的比较字段
USE [ASPDryrun]
GO
UPDATE [dbo].[Users]
SET [ID] = [IU].[PersNo],
[CostCenter] = [CC].[CostCenterID],
[OrgUnit] = [OU].[OrgUnitID]
FROM [dbo].[Users],
join [dbo].[Import_UserData] AS [IU] on [IU].[CorporateEmail]=users.[email]
join [dbo].[CostCenters] AS [CC] on [CC].[ID] = [IU].[CostCtr]
join [dbo].[OrgUnits] AS [OU] on [OU].[ID] = [IU].[OrgUnit]
USE [ASPDryrun]
GO
UPDATE [dbo].[Users]
SET [ID] = [IU].[PersNo],
[CostCenter] = [CC].[CostCenterID],
[OrgUnit] = [OU].[OrgUnitID]
FROM [dbo].[Import_UserData] AS [IU],
[dbo].[CostCenters] AS [CC],
[dbo].[OrgUnits] AS [OU],
[dbo].[Users] AS [U]
WHERE [CC].[EricssonID] = [IU].[CostCtr]
AND [OU].[EricssonID] = [IU].[OrgUnit]
AND [IU].[CorporateEmail] = [U].[Email]
GO