在可能有多行的数据库中插入一行

时间:2011-07-12 17:00:59

标签: sql database postgresql

我正在使用PostgreSQL并拥有如下表:

表名:ip4_bank

第1栏:ip4_address

第2栏:nic_id

默认情况下,此表将包含IPv4地址列表,其中字段2设置为null。 我想要做的是运行查询以将nic_id分配给下一个可用的IP4地址。

我到目前为止的查询是:

INSERT INTO ip4_bank (nic_id) VALUES ('1') WHERE nic_id = null 

但这会填满nic_id '1' nic_id的表格,其中所有内容都先前已设为空。

任何人对如何将{{1}}值只插入一行有什么想法?

1 个答案:

答案 0 :(得分:3)

假设“下次可用”是最低IP,请尝试:

UPDATE ip4_bank SET nic_id = 1
WHERE nic_id is null
AND ip4_address = (SELECT MIN(ip4_address)
                   FROM ip4_bank
                   WHERE nic_id is null)