我有一个表equip_info
:
equip_id | fam_id | asset_no
----------|--------|-----------
1 | 1 | 1
2 | 1 | 2
我想从不同的fam_id
插入一个新的equip_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
为主键,自动递增
1条答案
按热度按时间b1payxdu1#
MAX(asset_no)
在没有匹配行时为NULL。要用其他值替换NULL,请使用IFNULL,即用
IFNULL(MAX(asset_no), 0)
替换MAX(asset_no)
。