Buscar ultimo numero sin usar

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.777
Y preguntar por el máximo así a lo bruto?
 

SeWa

Pro
Se incorporó
4 Abril 2006
Mensajes
536
Código:
SELECT  id + 1
FROM    mytable mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mi 
        WHERE   mi.id = mo.id + 1
        )
ORDER BY
        id
LIMIT 1

La falencia de esta solución es que te retorna un valor entre el mínimo (40031) y máximo que existe en la tabla (89992). El mínimo debiera ser 10000 y el máximo 99999, es decir, el primer valor que debe retornar es el 10000 o 10001.

Tomando tú solución y modificandola un poco:

Código:
SELECT MIN(idcliente)+1
FROM
(
SELECT 10000 'idCliente'
UNION ALL
SELECT idCliente FROM Cliente
UNION ALL
SELECT 99999 'idCliente'
) AS TMP
WHERE TMP.idCliente + 1 NOT IN (SELECT idCliente FROM Cliente)

Lo probé en SQL Server.
 
Upvote 0
Subir