我有这张表equip_info
:
equip_id | fam_id | asset_no
----------|--------|-----------
1 | 1 | 1
2 | 1 | 2
我想从其他equip_id
插入新的fam_id
,并使asset_no
递增。
如果我这样做:
INSERT INTO equip_info (fam_id, asset_no)
VALUES (1, (SELECT MAX(asset_no) + 1 FROM equip_info WHERE fam_id = 1))
我得到了以下结果:
equip_id | fam_id | asset_no
----------|--------|-----------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
但是,如果我这样做:
INSERT INTO equip_info (fam_id, asset_no)
VALUES (2, (SELECT MAX(asset_no) + 1 FROM equip_info WHERE fam_id = 2))
它说:NOT NULL constraint failed: equip_info.asset_no
如果fam_id = 2不存在,我怎样才能将增量改为1?
我想得到这个结果:
equip_id | fam_id | asset_no
----------|--------|-----------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
备注:equip_id
是主键,自动增量
答案 0 :(得分:3)
MAX(asset_no)
为NULL。
要将NULL替换为其他值,请使用IFNULL,即将MAX(asset_no)
替换为IFNULL(MAX(asset_no), 0)
。