如何将此查询转换为 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
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的。
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))
Run Code Online (Sandbox Code Playgroud)
查询有效,但我得到错误的结果。
And*_*y M 12
为了同时在两列上实现连接,您可以使用 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));
Run Code Online (Sandbox Code Playgroud)
如果您使用的是3.15.0或更高版本,您还可以利用行值比较:
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);
Run Code Online (Sandbox Code Playgroud)