我有一个具有以下架构的表;
CREATE TABLE [dbo].[MatrixElements] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[OdPairKey] INT NOT NULL,
[Value] FLOAT (53) NOT NULL,
[Matrix_Id] INT NULL
);
Matrix_Id
是另一个表的外键。我想做的是用原始值和与相同OdPairKey
匹配但Matrix_Id
不同的其他值的总和覆盖表中的值。以下查询适用于 SQL Server;
UPDATE dbo.MatrixElements
SET [Value] = O.[Value] + I.[Value]
FROM dbo.MatrixElements O
INNER JOIN (SELECT * FROM dbo.MatrixElements WHERE Matrix_Id = 2) I
ON O.OdPairKey = I.OdPairKey
WHERE O.Matrix_Id = 1
但事实证明,SQLite不支持UPDATE上的FROM子句。我一生都无法弄清楚如何将其转换为兼容的SQLite查询。有什么想法吗?
您可以将查询转换为使用相关的子查询,如下所示:
UPDATE MatrixElements
SET Value = Value + (SELECT Value FROM MatrixElements a
WHERE a.Matrix_Id = 2 And a.OdPairKey = MatrixElements.OdPairKey LIMIT 1)
WHERE Matrix_Id = 1