如何获取 postgresql 数据透视表中任何属性的最后一个值 table

how to get last value of any attribute in postgresql pivot table

我有一个table这样的

  id     u_id   attr_key   attr_value   process_id     insert_time
------|-------|----------|------------|--------------|--------------
   1      1      name          john          1              1       
   2      1      family        smith         1              2
   3      2       job          clerk         2              3
   4      1       name         sarah         3              4
.............

我必须找到两件事:

  1. 我必须通过 tablefunc(crosstab) 创建一个视图来获取任何 u_id 的一组数据..所以很简单
  2. 我必须(实时)找到任何 u_id(如 Hbase 数据库)的任何键的最后一个值,所以我没有任何好的解决方案

这就是我需要的

  id     u_id   attr_key   attr_value
------|-------|----------|------------
   4      1       name         sarah 
   2      1      family        smith 

有什么想法或功能吗? (可以在我的数据模型中添加一列)

problems in Postgres is to use distinct on ()最有效的解决方案:

以下将检索单个 u_id

select distinct on (attr_key) id, u_id, attr_key, attr_value
from the_table
where u_id = 1
order by attr_key, insert_time desc;

(u_id, attr_key, insert_time) 上的索引应该有助于提高性能