Аналогичен ответу LukeH, но он выполняет то, что вы просили:
SELECT MIN(a.your_column) - 1 AS answer
FROM your_table AS a
LEFT JOIN your_table AS a2
ON a2.your_column = a.your_column - 1
LEFT JOIN tableB AS b
ON a.your_column = b.column1
WHERE a.your_column < 1000
AND b.column1 IS NULL
AND a2.your_column IS NULL
Редактировать:
UNION
SELECT MIN(a.your_column) + 1 AS answer
FROM your_table AS a
LEFT JOIN your_table AS a2
ON a2.your_column = a.your_column + 1
LEFT JOIN tableB AS b
ON a.your_column = b.column1
WHERE a.your_column < 1000
AND b.column1 IS NULL
AND a2.your_column IS NULL
и выбрать минимум двух значений.
Это все еще требует проверки, доступно ли значение 1, но если у вас есть промежуток между A и B, он должен найти A + 1 и B-1 сейчас, и вы можете выбрать наименьшее.Очевидно, A + 1 наименьший, так что вы можете просто использовать вторую часть ...