Update multiple columns on a row with a single select in sqlite

前端 未结 4 1186
灰色年华
灰色年华 2021-01-11 22:42

In SQLite I need to update row counts of a related table.

The query below does what I want but it walks the table multiple times to get the counts:

U         


        
4条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-11 23:17

    @cha why not check if exists?

    INSERT OR REPLACE INTO overallCounts (total, totalC, totalL, iic, il)
    SELECT
      count(*) as total,
      sum(case when source=0 then 1 else 0 end) as totalC,
      sum(case when source=2 then 1 else 0 end) as totalL,
      case when source=0 then 1 else 0 end as iic,
      case when source=2 then 1 else 0 end as il
    FROM widgets
    WHERE joinId=1234
    AND EXISTS (SELECT joinId FROM overallCounts WHERE joinId=1234)
    ON CONFLICT REPLACE
    

提交回复
热议问题