On Wed, 23 Jan 2013 21:32:20 -0700
"Keith Medcalf" <[email protected]> wrote:
> > And then I process it like this, N keys at a time:
> >
> > SELECT key FROM queue WHERE status=0 LIMIT N;
> > BEGIN TRANSACTION;
> > for key in keys:
> > UPDATE queue SET status=1 WHERE key=key;
> > END TRANSACTION;
> >
> > How can this SELECT and UPDATE be combined more efficiently?
>
> update queue set status=1 where key in (select key from queue where
> status=0 limit N);
Why process only N at a time, Richard? If you remove that requirement
the query is much simpler, because "key" is unique:
update queue set status=1 where status = 0;
Besides being nonstandard, the results using "limit N" are
nondeterministic. You don't know which rows are updated, only that (up
to) N are.
HTH.
--jkl
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users