2010-12-20 35 views
1

Ich habe eine riesige Tabelle mit Zahlen gefüllt (1001001..1009999) und es gibt sicherlich eine Reihe von ungenutzten Nummern in diesem Bereich. Also, ich könnte alle diese Nummern zurückgegeben haben, indem Sie tun:Finden Sie eine unbenutzte Nummer in einer Reihe von Zahlen

SELECT MY_IDENTIFIER FROM MY_TABLE 

, die alle verwendeten Zahlen zurückgeben würde. Wie könnte ich eine Liste von nicht verwendeten Nummern aus dieser Tabelle erhalten? Ich arbeite serverseitig (Rhino/Jaxer) mit JavaScript und meine Datenbank ist Oracle 10g.

Danke,

+0

Sie benötigen eine Art von einem Bericht, oder tun Sie brauchen, um sie programmatisch zu benutzen? –

+0

Um @ Erics Kommentar zu erweitern: Möchten Sie eine Lösung in SQL oder Javascript? – Xodarap

+0

Ich bevorzuge beide, aber eher den Gedanken dahinter, also könnte ich mich auf eine Vielzahl von Sprachen beziehen. – Shyam

Antwort

3

Die folgende Abfrage wird dir geben, was Sie brauchen:

SELECT seq_num 
    FROM (SELECT (lvl + &&v_from - 1) seq_num 
      FROM (SELECT * 
        FROM ( SELECT LEVEL lvl 
           FROM DUAL 
         CONNECT BY LEVEL <= (&&v_to - &&v_from) + 1))) 
WHERE seq_num NOT IN (SELECT my_identifier FROM my_table); 

ersetzen & & v_to und & & v_from mit Grenz Zahlen.

Referenz: http://oraqa.com/2006/01/20/how-to-generate-sequence-numbers-between-two-numbers/

1

Javascript wirklich ist nicht auf die im Zusammenhang, es ist nicht wahr? Ich habe etwas ähnliches vor Jahren gemacht.

Ich hatte eine Tabelle mit allen Zahlen in einem Bereich und verband diese beiden Tabellen und wählte die Nummern, die nicht verbunden werden konnten. Eine negative Auswahl.

So etwas wie

select nr bulk collect into nrs1 from tbl1 where nr not in 
       (select nr from tbl2); 
Verwandte Themen