Requête pour sélectionner le premier numéro libre

Signaler
Messages postés
5
Date d'inscription
lundi 12 janvier 2004
Statut
Membre
Dernière intervention
5 février 2013
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
Salut à tous !

Voici mon problème j'aimerai récupérer le premier numéro libre dans une table.

Voici le contenu de ma MaTable :

MonNumero MaColonne2
1 toto1
2 toto2
3 toto3
5 toto5
6 toto6
7 toto7
8 toto8
10 toto10


Voici ma requête :

SELECT CASE
WHEN (SELECT MonNumero FROM MaTable WHERE MonNumero=1)=1
THEN MonNumero +1
ELSE 1
END
FROM MaTable
WHERE MonNumero +1 NOT IN
(SELECT MonNumero FROM MaTable)
ORDER BY MonNumero FETCH FIRST ROW ONLY

Je m'attends à ce que la requête me retourne 4.

Je pense qu'il y a une solution déjà connue et plus performante, pourtant ça fait un moment que je cherche sur le net et j'ai rien trouvé ...

Merci les copains !!

2 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
Bonjour

essayez ceci :
SELECT M1.MonNumero + 1
FROM MaTable M1
LEFT OUTER JOIN MaTable M2
    ON M1.MonNumero = M2.MonNumero + 1
WHERE M2.MonNumero IS NULL
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonjour

Aieeeuuuuu, l'idée est bonne, mais l'implementation l'est moins

Spectro, essaie plutôt ça:

SELECT MIN(M1.MonNumero + 1) AS Expr1
FROM matable M1 LEFT OUTER JOIN matable M2 ON M1.MonNumero + 1 = M2.MonNumero
WHERE     (M2.MonNumero IS NULL)


Bob.
C# is amazing, enjoy it!