【问题标题】:Android SQLite update current table based on (sum of (current table + another table))Android SQLite根据(当前表+另一个表的总和)更新当前表
【发布时间】:2020-10-10 14:56:03
【问题描述】:

我在 Android SQLite dbHelper 中有两个表:

表#1

itemName | PCS
---------+------
item1    | 5
item2    | 7
item3    | 3

表#2

itemName | PCS
---------+------
item2    | 2
item3    | 17

我需要更新 Table#1 中的 PCS 列,将 table#2 中的所有 PCS 添加到 table#1(sum)\

我需要这个输出:

更新了表#1

    itemName | PCS
    ---------+------
    item1    |  5
    item2    |  9
    item3    | 20

【问题讨论】:

  • 任何帮助将不胜感激,非常感谢

标签: sql sqlite sql-update


【解决方案1】:

您可以使用从Table2 返回pcs 的值并将其添加到Table1pcs 的值的相关子查询:

update Table1
set pcs = pcs + coalesce((select pcs from Table2 where Table2.itemname = Table1.itemname), 0)

【讨论】:

  • 如果您的意思是 Table2 的错字,那么感谢我编辑。
  • @BarbarosÖzhan 你没有复制和粘贴代码的最后一部分:..., 0
  • 对不起,是的,我没看到 :),请重新格式化。 +1
【解决方案2】:

一种选择是通过使用INSERT OR REPLACE INTO 语句合并这些表的行:

INSERT OR REPLACE INTO Table1(itemName,PCS)
SELECT t1.itemName, COALESCE(t1.PCS,0)+COALESCE(t2.PCS,0)
  FROM Table1 t1 
  LEFT JOIN Table2 t2 ON t2.itemName = t1.itemName;

前提是itemName 列被定义为主键。

Demo

【讨论】:

  • 虽然这可能行得通,但删除Table1的所有行,然后再次插入相同数量的行,效率如何?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多