我的要求是这样的:
我必须从表“A”中获取一行。现在我必须遍历所有行并从ID
列获取值。如果我得到ID = 5
,那么我想执行一些存储过程,通过该过程我从某个表“B”获取前一个id行。喜欢
select * from table b where ID = 4
购买我的问题是:如果有人从数据库中删除了该行(例如,某些用户删除了ID为3和4的行) - 那么如何从数据库中获取id = 2
的行?
请给我一些sql存储过程以从表中获取以前的id记录。
答案 0 :(得分:4)
很难准确理解你在寻找什么 - 这样的事情可能吗??
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 小于您传入的@ID
的行,所以:
EXEC dbo.FetchPreviousRow @ID = 5
将返回ID = 4
行 - 如果存在的话。否则,它将返回ID = 3
行 - 如果存在。否则行ID = 2
- 等等......
答案 1 :(得分:2)
以下查询应该为您提供:
select max(ID) from YourTable where ID < @YourID
@YourID
是包含您最近插入的ID的变量
答案 2 :(得分:1)
如何选择小于5的所有ID并按ID排序。然后第一个结果就是你想要的结果。