我目前有一个包含两个表格products
和inventory
的数据库,我想跟踪inventory
表中的数量。创建一行时,onhand
列默认为NULL,我注意到如果我使用下面的查询...
UPDATE inventory SET onhand = onhand + 1 WHERE inventory.prod_id IN (SELECT products.id FROM products WHERE products.upc="012345678911");
什么都没发生。但如果我这样做:
UPDATE inventory SET onhand = 1 WHERE inventory.prod_id IN (SELECT products.id FROM products WHERE products.upc="012345678911");
然后它有效。所以我猜测它没有将NULL值增加到1.我将不得不检查这个字段是否为NULL并设置为1,否则增加+1,或者有没有办法从NULL递增?
答案 0 :(得分:2)
NULL
是一个特殊值,基本规则是涉及NULL
的大多数计算结果为NULL
。更具体地说,在SQLite中:Adding anything to null gives null
在您的情况下,您可以使用coalesce功能:
UPDATE inventory
SET onhand = coalesce(onhand, 0) + 1
WHERE ...