On Sat, 16 Jan 2016 10:18:28 +0200
audio muze <audiomuze at gmail.com> wrote:
> Why is it that SQLite does not support a FROM clause in an update
> statement?
I can't answer why, but I can tell you it's fraught with potential
error. Inventing syntax runs the risk of supporting undesirable
behavior.
SQL Server has such a syntax. Unfortunately, when you say:
update T ... from S
the result is nondeterministic if more than one row in S matches. The
update applies all rows in S matching T. Of course, only the last one
is preserved. Of course, because order is nonsemantic, there's no way
to know *which* S row will "win".
The ANSI standard syntax
> UPDATE target
> SET resource = (SELECT resource
> FROM source
> WHERE id = target.id)
has the merit that the sub-select must produce 1 row. If it does not,
the server raises an error to the effect that SET requires a scalar
input.
--jkl