snippetsqlModerate
How to UPDATE a SQLITE Column with an INNER JOIN on TWO FIELDS
Viewed 0 times
updatecolumnwithfieldssqlitejointwohowinner
Problem
How can I translate this query to SQLite:
This is what I have tried.
The query works but I get wrong results.
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.Field3This is what I have tried.
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))The query works but I get wrong results.
Solution
In order to implement the join on two columns simultaneously, you can use an EXISTS predicate:
If you are using version 3.15.0 or later, you can also take advantage of row value comparisons:
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));If you are using version 3.15.0 or later, you can also take advantage of row value comparisons:
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);Code Snippets
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));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);Context
StackExchange Database Administrators Q#175803, answer score: 13
Revisions (0)
No revisions yet.