Sql server SQL更新列,子查询提供重复结果

Sql server SQL更新列,子查询提供重复结果,sql-server,asp.net-mvc,Sql Server,Asp.net Mvc,我对这个论坛和SQL语言都是新手。我在尝试使用两个表更新一个表中的列时遇到了一个问题: 我有以下表格顺序: CREATE TABLE [dbo].[Orders] ( [IdOrder] INT NOT NULL PRIMARY KEY IDENTITY, [IdLine] INT NOT NULL, [OrderNo] NVARCHAR(50) NULL, [Description] NVARCHAR(50) NULL, [StartDate] DATETIME NULL, [EndD

我对这个论坛和SQL语言都是新手。我在尝试使用两个表更新一个表中的列时遇到了一个问题:

我有以下表格顺序:

CREATE TABLE [dbo].[Orders]
 (
[IdOrder] INT NOT NULL PRIMARY KEY IDENTITY,
[IdLine] INT NOT NULL,
[OrderNo] NVARCHAR(50) NULL, 
[Description] NVARCHAR(50) NULL, 
[StartDate] DATETIME NULL, 
[EndDate] DATETIME NULL,
[Setpoint] INT NULL,
[Score] FLOAT NULL, 
[Status] NCHAR(10) NULL, 
CONSTRAINT [FK_Order_Line_IdArea] FOREIGN KEY ([IdLine]) REFERENCES [Line]  ([IdLine]) ON DELETE CASCADE ON UPDATE CASCADE
)
然后我有另一张桌子。这两个是一对多关系

CREATE TABLE [dbo].[Productivity]
(
[IdProductivity] INT NOT NULL PRIMARY KEY, 
[IdOrder] INT NULL,
[Cont] INT NULL, 
CONSTRAINT [FK_Product_Order_IdOrder] FOREIGN KEY ([IdOrder]) REFERENCES      [Orders]([IdOrder]) ON DELETE CASCADE ON UPDATE CASCADE
)
我在这个表上有som数据,当我执行这个查询时,结果很好:

查询:

SELECT (CAST(Cont AS FLOAT) / CAST(Setpoint AS FLOAT)*100 ) AS col from Productivity LEFT OUTER JOIN Orders ON Productivity.IdOrder = Orders.IdOrder
结果:

然后,当我应用子查询来更新订单表时,在Score列中使用以下查询:

UPDATE Orders
SET Score = col 
FROM (SELECT (CAST(Cont AS FLOAT) / CAST(Setpoint AS FLOAT)*100 ) AS col from Productivity LEFT OUTER JOIN Orders ON Productivity.IdOrder = Orders.IdOrder) 
AS query
我得到这个结果:


请让我知道,如果我需要提供更多有关这方面的信息,并感谢你这么多的帮助

我不会把它作为一个子查询,而只是一个普通的更新

UPDATE Orders
SET Score = (CAST(Cont AS FLOAT) / CAST(Setpoint AS FLOAT)*100 ) 
FROM Productivity LEFT OUTER JOIN Orders 
ON Productivity.IdOrder = Orders.IdOrder