Sql server SQL更新列,子查询提供重复结果
我对这个论坛和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
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