我有一些三位数字的客户编号,从“001”到“999”。有时会出现空缺,可以重新使用。我正在尝试填补这些空缺。因此,我正在寻找一种找到第一个可用空缺的方法。
CREATE TABLE co
( co_clno varchar(3));
INSERT INTO co
VALUES
('001'),
('002'),
('003'),
('005'),
('006'),
('007'),
('008');
这里可用的间隔是“004”。 我尝试过首先创建一个可用数字的列表,但没有成功:
WITH numbers AS
(SELECT to_char(generate_series(1,9),'000') num)
SELECT num FROM numbers
WHERE num NOT IN(SELECT co_clno FROM co)
最终代码应该是这样的:
WITH numbers AS
(SELECT to_char(generate_series(1,9),'000') num)
SELECT min(num) FROM numbers
WHERE num NOT IN(SELECT co_clno FROM co)
SQLFiddle: http://sqlfiddle.com/#!15/1e48d/1
万分感谢任何线索。