Sqlite:当行不存在或为空时将最大值设置为零

Sqlite: get max value set to zero when row doesn't exist or is null

我有这个 table 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为主键,自增

MAX(asset_no) 当没有匹配行时为 NULL。

要用其他值替换 NULL,请使用 IFNULL,即将 MAX(asset_no) 替换为 IFNULL(MAX(asset_no), 0)