I got it and thank you very much for everyone's help!!

It seems that "left join where is null" is faster comparing with "except". And my final query is:

select num as missing
from   generate_series(5000, #{max_id}) t(num)
left join t1  on (t.num = t1.id)
where t1.id is null;

Emi

On 04/24/2012 11:42 AM, Steve Crawford wrote:
On 04/24/2012 07:15 AM, Emi Lu wrote:
Good morning,

May I know is there a simple sql command which could return missing
numbers please?

For example,

t1(id integer)

values= 1, 2, 3 .... 5000000

select miss_num(id)
from t1 ;


Will return:
===============
37, 800, 8001

T

select generate_series(1,5000000) except select id from t1;

Example

select anumber from fooo;
anumber
---------
1
3
5
7
9
11
13
15

select generate_series(1,15) except select anumber from fooo order by 1;
generate_series
-----------------
2
4
6
8
10
12
14

Cheers,
Steve


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to