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)