получить предыдущий идентификатор строки с помощью хранимой процедуры - PullRequest
1 голос
/ 17 мая 2011

Мои требования примерно такие:

Мне нужно выбрать строку из таблицы "A".Теперь мне нужно пройтись по всем строкам и получить значения из столбца ID.Если я получу ID = 5, тогда я захочу выполнить некоторую хранимую процедуру, с помощью которой я получу предыдущую строку идентификатора из некоторой таблицы "B".Как и

select * from table b where ID = 4

Куплю мой вопрос: если кто-то удалил эту строку из базы данных (например, какой-то пользователь удалил строки с идентификаторами 3 и 4), то как мне получить строку с id = 2 избаза данных?

Пожалуйста, дайте мне несколько хранимых процедур sql для получения предыдущей записи идентификатора из таблицы.

Ответы [ 3 ]

4 голосов
/ 17 мая 2011

Трудно понять, что именно вы ищете - может быть, что-то вроде этого?

CREATE PROCEDURE dbo.FetchPreviousRow @ID INT
AS BEGIN

   SELECT TOP 1 ID, (other columns.....)
   FROM dbo.TableB
   WHERE ID < @ID
   ORDER BY ID DESC

END

Это выберет строку с наибольшим идентификатором меньше @ID, которое вы передаете, поэтому:

EXEC dbo.FetchPreviousRow @ID = 5

вернет строку с ID = 4 - если она существует. В противном случае он вернет строку с ID = 3 - если она существует. В противном случае строка с ID = 2 - и так далее ....

2 голосов
/ 17 мая 2011

Следующий запрос должен получить его для вас:

select max(ID) from YourTable where ID < @YourID

@YourID - это переменная, содержащая ваш недавно вставленный идентификатор

1 голос
/ 17 мая 2011

Как насчет выбора всех идентификаторов меньше 5 и сортировки их по идентификатору.Тогда первым результатом будет тот, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...