Bravo Negaton, vous avez terriblement progressé.
Encore eut-il fallut savoir que votre borne basse était 1. Dans ce cas... il faut faire :J'ai rajouté un autre union all, pour gérer le cas ou un premier trou est en début de fichier :
par exemple, si j'ai la suite "2,3,4,5" je souhaite retourner "1" et votre requête retourne "6".
Ceci règle d'ailleurs un autre cas de figure : celui de la table vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SELECT MIN(NEW) FROM (SELECT N1.N+1 AS NEW FROM INC AS N1 JOIN INC AS N2 ON N1.N < N2.N GROUP BY N1.N HAVING N1.N < MIN(N2.N) - 1 UNION ALL SELECT MAX(N) + 1 FROM INC UNION ALL SELECT MIN(N) - 1 FROM INC WHERE NOT EXISTS(SELECT * FROM INC WHERE N = 1) UNION ALL SELECT 1 WHERE NOT EXISTS(SELECT * FROM INC WHERE N = 1) ) AS T
A +
Partager