如何在选定的行中从1到n序列化一个项目指针



如下例所示,查询的输出包含从324开始到127结束的块,因此,对于每个新的块id,块内的itempointer或行索引从1开始。换句话说,如下所示对于block 324,它只有索引为10的itempointer对于块325,它有从1开始到9结束的项目指针

我想有一个单一的块,使项目指针或行索引从1开始,以25结束

请让我知道如何实现这一目标和为什么我有三个不同的积木?

例1查询:

select ctid 
from awanti_grid_cell_data agcd
where selectedsiteid = '202230060950' 
and centerPointsOfWindowAsGeoJSONInEPSG4326ForCellsInTreatment IS NOT NULL
and centerPointsOfWindowAsGeoJSONInEPSG4326ForCellsInTreatment <> 'None'
result:
|ctid    |
|--------|
|(324,10)|
|(325,1) |
|(325,2) |
|(325,3) |
|(325,4) |
|(325,5) |
|(325,6) |
|(325,7) |
|(325,8) |
|(325,9) |
|(326,1) |
|(326,2) |
|(326,3) |
|(326,4) |
|(326,5) |
|(326,6) |
|(326,7) |
|(326,8) |
|(326,9) |
|(327,1) |
|(327,2) |
|(327,3) |
|(327,4) |
|(327,5) |
|(327,6) |

你没有抓住重点。ctid是表中的一行的物理地址,不关你的事。数据库可以自由选择它认为适合表行的任何位置。相比之下,你不能去当局要求你的社会保险号是12345678——它只是简单地分配给你,你没有发言权。这就是元组的物理位置。

很可能你问这个问题不是纯粹出于好奇,而是因为你想解决某个问题。相反,你应该问一个关于你真正问题的问题,也许会有一个好的答案。但无论你想解决什么问题,使用ctid可能都不是正确的答案,特别是如果你想控制它。