This is a question about SQL language support and the handling of row-values, and I thought my question was quite clear. I appreciate your offers to help, but they do not have anything to do with the question I am asking.
As I wrote: My question, though, is why is the VALUES bit needed for the WHERE clause in this case? Reading the docs on row values, it seemed to me that comparing two row values should work fine: Two row values of the same size can be compared using operators <, <=, >, >=, =, <>, IS, IS NOT, IN, NOT IN, BETWEEN, or CASE. Is there a reason I need to specify VALUES instead of simply passing in a set of row tuples? It seems a little bit inconsistent to me. Thanks! On Tue, Apr 23, 2019 at 9:49 AM Simon Slavin <slav...@bigfraud.org> wrote: > On 23 Apr 2019, at 3:42pm, Charles Leifer <colei...@gmail.com> wrote: > > > Thanks Simon -- this is just a minimal example. The WHERE clause is > needed because, unless I would provide a CASE WHEN for every single (key, > value), then the UPDATE would set the "extra" value of any unmatched key, > value to NULL. > > You can use ELSE: > > UPDATE "bu" SET "extra" = CASE "key"||"value" > WHEN 'k1'||1 THEN 100 > WHEN 'k2'||2 THEN -200 > WHEN 'k3'||3 THEN 30 > ELSE "extra" > END; > > But I still think that using multiple UPDATE statements will still be far > faster. > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users