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

Messages postés
5
Date d'inscription
lundi 12 janvier 2004
Statut
Membre
Dernière intervention
5 février 2013
- - Dernière réponse : cs_Robert33
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
- 9 janv. 2011 à 11:21
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 !!
Afficher la suite 

2 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
0
Merci
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
Commenter la réponse de aieeeuuuuu
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
26
0
Merci
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!
Commenter la réponse de cs_Robert33