MySQL: znajdź brakujące identyfikatory zamówień

Znam to pytanie kilka razy w StackOverFlow. Próbowałem kilku z nich, ale nie mam szczęścia.

Mam tabelę MySQL, w której znajduje się pole (orders_id) który może pojawić się losowo w tabeli (Nie sekwencyjnie) i muszę dowiedzieć się, których identyfikatorów brakuje w tabeli.

 orders_id     product_name       qty    
       1007      Wireless Mouse      1
       1000      Laptop              1
       1004      Wireless Mouse      3
       1020      PC                  3
       1003      Wireless Mouse      4
       1025      IPAD                4
       1026      iphone              1

Oczekiwana odpowiedź:

Założyćorders_id startując od1000.

  orders_id     
       1000 
       1001
       1002     
       1005      
       1006    
       1008      
      ......  


Stworzyłem już powyższą tabelę w „SqlFiddle”, możecie ją wykorzystać.

Patrz tabela: SQLfiddle

** SQL próbowałem: **

declare @id int
declare @maxid int

set @id = 1
select @maxid = max(`orders_id`) from orders

create temporary table IDSeq
(
    id int
)

while @id < @maxid
begin
    insert into IDSeq values(@id)

    set @id = @id + 1
end

select 
    s.id 
from 
    idseq s 
    left join orders t on 
        s.id = t.`orders_id` 
 where t.`orders_id` is null

 drop table IDSeq

Wziąłem powyższy SQL z następującej odpowiedzi:

SQL: znajdź brakujące identyfikatory w tabeli

wypróbowałem również ANSI SQL:

SELECT a.orders_id+1 AS start, MIN(b.orders_id) - 1 AS end
    FROM orders AS a, orders AS b
    WHERE a.orders_id < b.orders_id
    GROUP BY a.orders_id
    HAVING start < MIN(b.orders_id)

Każdy ma jakiś pomysł? jak mogę znaleźć identyfikator brakujących zamówień.

questionAnswers(1)

yourAnswerToTheQuestion