В принципе в SQL нет такой вещи, как «между двумя записями» - собственный порядок записей не объявляется.Вы должны запрашивать данные в любом порядке.
Как насчет второй части вашего вопроса - обновление серийных номеров, тогда у вас есть два варианта.
Сначала следует использовать не целые, а значения с плавающей запятойдля упорядочения, таким образом, вы можете использовать значение 3.5, которое возвращает вновь добавленную строку между 3 и 4, когда запрос упорядочен по этому полю.
Второй - увеличить все серийные номера, больше 3 в вашем случаеи вставьте новую запись после этого:
Update mytable Set serialno=serialno+1 Where serialno > @lastnumbertokeep
Insert Into mytable (serialno, otherfields) Values (@lastnumbertokeep+1, othervalues)
Для 5 записей и одного пользователя за раз, что не является проблемой;для миллионов записей и 10 одновременных обновлений это блокирует базу данных на длительное время и может вызвать неприятные побочные эффекты.