Re: [SQL] Simple way to get missing number

From: Emi Lu <emilu(at)encs(dot)concordia(dot)ca>
To: Steve Crawford <scrawford(at)pinpointresearch(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org, "pgsql-general(at)postgresql(dot)org >> \"pgsql-general(at)postgresql(dot)org\"" <pgsql-general(at)postgresql(dot)org>
Subject: Re: [SQL] Simple way to get missing number
Date: 2012-04-24 18:10:24
Message-ID: 4F96EC90.6070600@encs.concordia.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-sql

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

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Lonni J Friedman 2012-04-24 18:21:10 Re: pg_basebackup issues
Previous Message Andreas 2012-04-24 18:07:34 how to group by similarity ?

Browse pgsql-sql by date

  From Date Subject
Next Message Andreas 2012-04-24 18:39:28 How to group by similarity?
Previous Message Andreas Kretschmer 2012-04-24 16:06:21 Re: Simple way to get missing number