2017-01-31 10 views
1

次のスキーマを持つテーブルがあります。SQL ServerのUPDATE FROMを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 
); 

は、別のテーブルの外部キーです。私がしたいのは、テーブル内の値を、元の値と同じ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

'dbo'と角括弧を退治してみてください。 –

+0

@DhruvSaxena私はSQLite版ではdboや角かっこがありません。それでも動作しません。それは問題ではありません。問題は私の質問の最下部に記載されています。 SQLiteはUPDATEのFROM句をサポートしていません。 – Steztric

答えて

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 
+0

それはうまくいった、ありがとう。 – Steztric

関連する問題