Una forma de evitar el loop es creando una tabla lookup con los valores de todos los boletos, por ejemplo:
Código SQL:
Ver originalCREATE TABLE boletos (numero INT)
CREATE TABLE boletos_sorteados (numero INT)
INSERT INTO boletos VALUES (0)
INSERT INTO boletos VALUES (1)
INSERT INTO boletos VALUES (2)
INSERT INTO boletos VALUES (3)
INSERT INTO boletos VALUES (4)
INSERT INTO boletos VALUES (5)
INSERT INTO boletos VALUES (6)
INSERT INTO boletos VALUES (7)
INSERT INTO boletos VALUES (8)
INSERT INTO boletos VALUES (9)
INSERT INTO boletos_sorteados VALUES (9)
INSERT INTO boletos_sorteados VALUES (5)
INSERT INTO boletos_sorteados VALUES (3)
INSERT INTO boletos_sorteados VALUES (9)
INSERT INTO boletos_sorteados VALUES (0)
INSERT INTO boletos_sorteados VALUES (6)
INSERT INTO boletos_sorteados VALUES (6)
INSERT INTO boletos_sorteados VALUES (5)
--consulta 1
SELECT numero FROM boletos
WHERE numero NOT IN (SELECT numero FROM boletos_sorteados)
ORDER BY numero DESC
--consulta 2
SELECT COUNT(*), numero FROM boletos_sorteados
GROUP BY numero
ORDER BY numero DESC
Saludos