Две таблицы члена, который состоит из VoucherCode (обнуляемым Int) и схема (BigInt) схемное состоит из schemeId (BigInt), mincode (INT), maxcode (интермедиат)Найти промежутки между в мин и макс
Мне нужно найти пробелы в ваучерокодах членов, внутри минимальных и максимальных кодов. Если mincode равен 1, а maxcode - 10, а существующие коды ваучеров - 2, 3 и 4, то он должен вернуть 1. Если существуют коды 1, 2 и 4, тогда он должен вернуть 3. Если 1, 2 и 3 существуют, должен вернуть 4.
Это то, что я до сих пор:
SELECT MIN(ID + 1) FROM (
SELECT mincode AS ID from Scheme as s UNION ALL
SELECT
MIN(vouchercode + 1)
FROM
member mmm where mmm.voucherCode is not null
) AS T1
WHERE
ID+1 NOT IN (SELECT vouchercode as ID FROM member m where voucherCode is not null)
Это работает, но не для всех 3 сценариев. Если существуют 2, 3 и 4, тогда он возвращает нуль вместо 1. 1, 3 и 4, тогда он возвращает 2, правильно! 1, 2 и 3, и он возвращает нуль, а не 4.
Это было бы довольно просто с таблицей таблиц. –