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

vql8enpb  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(184)

我有一个表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为主键,自动递增

b1payxdu

b1payxdu1#

MAX(asset_no)在没有匹配行时为NULL。
要用其他值替换NULL,请使用IFNULL,即用IFNULL(MAX(asset_no), 0)替换MAX(asset_no)

相关问题