我有一个包含以下架构的表格;
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查询。有什么想法吗?
答案 0 :(得分:2)
您可以将查询转换为使用相关子查询,如下所示:
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