Sqlite:当行不';不存在或为空

Sqlite:当行不';不存在或为空,sqlite,null,max,Sqlite,Null,Max,我有这个表设备信息: equip_id | fam_id | asset_no ----------|--------|----------- 1 | 1 | 1 2 | 1 | 2 我想从不同的fam\u id插入一个新的设备id,并使资产编号增加 如果我这样做: INSERT INTO equip_info (fam_id, asset_no) VALUES (1, (SELECT MAX(asset_no) + 1

我有这个表
设备信息

   equip_id | fam_id | asset_no
  ----------|--------|-----------
    1       | 1      |  1
    2       | 1      |  2
我想从不同的
fam\u id
插入一个新的
设备id
,并使
资产编号增加

如果我这样做:

INSERT INTO equip_info (fam_id, asset_no)
VALUES (1, (SELECT MAX(asset_no) + 1 FROM equip_info WHERE fam_id = 1))
INSERT INTO equip_info (fam_id, asset_no)
VALUES (2, (SELECT MAX(asset_no) + 1 FROM equip_info WHERE fam_id = 2))
我得到以下结果:

   equip_id | fam_id | asset_no
  ----------|--------|-----------
    1       | 1      |  1
    2       | 1      |  2
    3       | 1      |  3
但是,如果我这样做:

INSERT INTO equip_info (fam_id, asset_no)
VALUES (1, (SELECT MAX(asset_no) + 1 FROM equip_info WHERE fam_id = 1))
INSERT INTO equip_info (fam_id, asset_no)
VALUES (2, (SELECT MAX(asset_no) + 1 FROM equip_info WHERE fam_id = 2))
它说:
非空约束失败:装备信息资产号

如果fam_id=2不存在,如何将增量改为1

我想得到这个结果:

   equip_id | fam_id | asset_no
  ----------|--------|-----------
    1       | 1      |  1
    2       | 1      |  2
    3       | 1      |  3
    4       | 2      |  1
备注:
equipment\u id
为主键,当没有匹配行时,自动递增的

MAX(资产编号)
为空

若要使用其他值替换NULL,请使用,即将
MAX(资产编号)
替换为
IFNULL(MAX(资产编号),0)