У меня есть таблица, которая содержит некоторые данные, которые (среди других столбцов) имеют автоинкрементный столбец "id" и один столбец "sifra".
Мне нужно найти следующий бесплатный номер "sifra" на основе некоторого ввода (числа).
Если у меня есть следующие значения в моей таблице для столбца "sifra":
Если я отправлю значение "1", mysql должен вернуть "10", потому что это следующее свободное целое с ведущим "1", и если я передаю "32", он должен вернуть "320".
Если я передаю "681", он должен вернуть "6811".
Это то, что я пробовал до сих пор:
SELECT LEFT(MAX(a.sifra), 5) + 1 max_val
FROM artikli as a
left join artikli as arttab
on a.sifra + 1 = arttab.sifra
WHERE a.sifra LIKE '" & sifra & "%'
Вы можете использовать следующую хранимую процедуру:
delimiter $$
drop procedure if exists getfreenum $$
create procedure getfreenum(num int)
begin
set @compare := (num * 10);
set @maxId := (select sifra from artikli where sifra >= @compare order by sifra asc limit 1);
while @compare = @maxId do
set @compare := @compare + 1;
set @maxId = (select sifra from artikli where sifra >= @compare order by sifra asc limit 1);
end while;
select @compare;
end $$
delimiter ;