このクエリをSQLiteに変換するにはどうすればよいですか。
UPDATE Table_1
INNER JOIN Table_2 ON (Table_1.Field1 = Table_2.Field1)
AND(Table_1.Field2 = Table_2.Field2)
SET Table_1.Field3 = Table_2.Field3
これは私が試したものです。
UPDATE Table_1
SET Field3 = (SELECT Field3
FROM Table2
WHERE (Field1 = Table_2.Field1)
AND (Field2 = Table_2.Field2))
WHERE Field1 IN (SELECT Table_2.Field1
FROM Table2
WHERE (Field1 = Table_2.Field1)
AND (Field2 = Table_2.Field2))
AND Field2 IN (SELECT Table_2.Field2
FROM Table2
WHERE (Field1 = Table_2.Field1)
AND (Field2 = Table_2.Field2))
クエリは機能しますが、間違った結果が返されます。
2つの列に結合を同時に実装するには、EXISTS述語を使用できます。
UPDATE Table_1
SET Field3 = (SELECT Field3
FROM Table_2
WHERE (Table_1.Field1 = Table_2.Field1)
AND (Table_1.Field2 = Table_2.Field2))
WHERE EXISTS (SELECT *
FROM Table_2
WHERE (Table_1.Field1 = Table_2.Field1)
AND (Table_1.Field2 = Table_2.Field2));
バージョン3.15. 以降を使用している場合は、 行の値の比較 を利用することもできます。
UPDATE Table_1
SET Field3 =
(SELECT Field3
FROM Table_2
WHERE (Table_1.Field1, Table_1.Field2) = (Table_2.Field1, Table_2.Field2))
WHERE (Field1, Field2) IN (SELECT Field1, Field2 FROM Table_2);