sql - Update multiple columns on a row with a single select in sqlite -
in sqlite need update row counts of related table.
the query below want walks table multiple times counts:
update overallcounts set total = (count(*) widgets joinid=1234), totalc = (count(*) widgets joinid=1234 , source=0), totall = (count(*) widgets joinid=1234 , source=2), iic = (select case when count(*)>0 1 else 0 end widgets joinid=1234 , widgets.source=0), il = (select case when count(*)>0 1 else 0 end widgets joinid=1234 , widgets.source=2) id=1234
this query retrieves want need turn output update statement:
select count(*) total, sum(case when source=0 1 else 0 end) totalc, sum(case when source=2 1 else 0 end) totall, case when source=0 1 else 0 end iic, case when source=2 1 else 0 end il widgets joinid=1234
sqlite not support joins in update queries. limitation of sqlite design. however, can still in sqlite using powerful insert or replace syntax. disadvantage of have entry in overallcounts (if did not have entry inserted). syntax be:
insert or replace overallcounts (total, totalc, totall, iic, il) select count(*) total, sum(case when source=0 1 else 0 end) totalc, sum(case when source=2 1 else 0 end) totall, case when source=0 1 else 0 end iic, case when source=2 1 else 0 end il widgets joinid=1234 on conflict replace
Comments
Post a Comment