In UPDATE statements we can use FROM to perform updates using data from other tables:
"UPDATE t SET a=v.b FROM v"
err: 1:20: expected semicolon or EOF, found 'FROM'
stmt: &sql.UpdateStatement{WithClause:(*sql.WithClause)(nil), Update:sql.Pos{Offset:0, Line:1, Column:1}, UpdateOr:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrReplace:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrRollback:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrAbort:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrFail:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrIgnore:sql.Pos{Offset:0, Line:0, Column:0}, Table:(*sql.QualifiedTableName)(0xc000124000), Set:sql.Pos{Offset:9, Line:1, Column:10}, Assignments:[]*sql.Assignment{(*sql.Assignment)(0xc000126000)}, Where:sql.Pos{Offset:0, Line:0, Column:0}, WhereExpr:sql.Expr(nil), ReturningClause:(*sql.ReturningClause)(nil)}
"UPDATE t SET a=v.b FROM (SELECT b FROM v) AS v"
err: 1:20: expected semicolon or EOF, found 'FROM'
stmt: &sql.UpdateStatement{WithClause:(*sql.WithClause)(nil), Update:sql.Pos{Offset:0, Line:1, Column:1}, UpdateOr:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrReplace:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrRollback:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrAbort:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrFail:sql.Pos{Offset:0, Line:0, Column:0}, UpdateOrIgnore:sql.Pos{Offset:0, Line:0, Column:0}, Table:(*sql.QualifiedTableName)(0xc0001240b0), Set:sql.Pos{Offset:9, Line:1, Column:10}, Assignments:[]*sql.Assignment{(*sql.Assignment)(0xc000126070)}, Where:sql.Pos{Offset:0, Line:0, Column:0}, WhereExpr:sql.Expr(nil), ReturningClause:(*sql.ReturningClause)(nil)}
In UPDATE statements we can use FROM to perform updates using data from other tables:
https://www.sqlite.org/lang_update.html#update_from
However, the following queries fail to parse: https://go.dev/play/p/we-NdNsNBKZ
Produces: