Мне нужна помощь в следующем запросе в php. Я хочу создать авто номер, как 0001, 0002. Я использую этот запросphp auto generate number from my sql db
$query = "SELECT MAX(cast(registration_code as decimal)) id FROM accounts ";
if($result = mysql_query($query))
{
$row = mysql_fetch_assoc($result);
$count = $row['id'];
$count = $count+1;
$code_no = str_pad($count, 4, "0", STR_PAD_LEFT);
}
Это работает правильно, но проблемы в том, что, когда я удалить любое число, как 0001, 0002, 0003 и я удалить 0002 это создать 0004 я хочу это создаст номер пропущенной я имею в виду 0001 до 0003, если отсутствует какой-либо, что
создающихблагодаря
возможно дубликат [Как найти "пробел" в противоречили с SQL?] (Http://stackoverflow.com/questions/1312101/how-to-find-a-gap-in-running-counter-with-sql) –
, потому что вы уже сохранили числа до 0003, которые определяют 003 как его максимальное число. Таким образом, даже у вас осталось только 2 номера и т. Д. 001 003. Он определенно получит 003, так как он max, добавив +1 к нему, и вы получите 0004 с помощью функции MAX(). –
Поскольку вы используете функцию MAX, вы всегда будете получать большее число. Если вам нужно перерабатывать удаленные номера, я думаю, вы должны сохранить список удаленных номеров, а затем выбрать меньший из этого списка. Если этот список пуст, вы используете вышеуказанный оператор sql. – user1498339