将SQL Server中的UPDATE FROM转换为SQLite

时间:2017-01-31 22:37:10

标签: sql sqlite

我有一个包含以下架构的表格;

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查询。有什么想法吗?

1 个答案:

答案 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