使用PostgreSQL中的查询在打开的游标中定位
我在一个查询上声明了一个游标,并希望使用同一表上的另一个查询在该打开的游标中重新定位,例如 这是我的光标 按somedate为从mytable order中选择*声明mycursor游标 这是我想要得到的职位: 从mytable中选择ROWNUMBER(),其中name=“fred” 使用ROWNUMBER()(或其他一些构造),我想在打开的光标中定位 我知道我可以使用Fetch/Move在光标内定位,但定位不是绝对的使用PostgreSQL中的查询在打开的游标中定位,postgresql,cursor,Postgresql,Cursor,我在一个查询上声明了一个游标,并希望使用同一表上的另一个查询在该打开的游标中重新定位,例如 这是我的光标 按somedate为从mytable order中选择*声明mycursor游标 这是我想要得到的职位: 从mytable中选择ROWNUMBER(),其中name=“fred” 使用ROWNUMBER()(或其他一些构造),我想在打开的光标中定位 我知道我可以使用Fetch/Move在光标内定位,但定位不是绝对的 这可以做到吗?除非我看错了你的问题,否则你最好这样做: DECLARE my
这可以做到吗?除非我看错了你的问题,否则你最好这样做:
DECLARE mycursor CURSOR FOR
SELECT *, rank() OVER (ORDER BY somedate) FROM mytable ORDER BY somedate;
如果您事先知道行号,您可以使用move/fetch直接跳到行号;如果您不想知道,但想知道,您可以在获取时使用访问它
也就是说,请注意,查询本身会变慢。因此,如果您已经知道行的位置,那么最好使用限制/offet
,如果您不知道,则在应用程序中计算行数