最近的开发中使用PostgreSql时也遇到了去重的问题,开始的时候确实一筹莫展,不像Oracle有rowid这样的字段(是因为我不知道pg中也有类似的字段),因此就在文档中找类似的字段,于是想起了几个系统字段来,这边着重就看解决问题的ctid。
ctid是一个表中物理上确认版本的字段,这是个系统字段,只要表中存在数据那么就会存在这个字段,与oid不同。要想使用OID,创建表时应该带上with oid。
在一个表中ctid是唯一的,那么就符合了去重的先决条件。于是,在下面的情况下,
"ctid" "id" "name_1" "name_2" "name_3"
"(0,133)" "3" "name_13" "name_23" "name4444"
"(1,119)" "3" "name_13" "name_23" "name4444"

本文介绍了在PostgreSQL中如何利用ctid字段解决数据去重问题。ctid是一个表的物理版本标识,不同于oid,它在每个表中都是唯一的。通过选取每个id对应的最小ctid,可以有效地保留唯一数据记录。

1517

被折叠的 条评论
为什么被折叠?



