当前位置:  开发笔记 > 数据库 > 正文

将最新的各种usermetadata标签加入用户行

如何解决《将最新的各种usermetadata标签加入用户行》经验,为你挑选了1个好方法。

我有一个postgres数据库,其中包含用户表(userid,firstname,lastname)和usermetadata表(userid,代码,内容,创建的日期时间).我按代码在usermetadata表中存储有关每个用户的各种信息,并保留完整的历史记录.例如,用户(用户ID 15)具有以下元数据:

15, 'QHS', '20', '2008-08-24 13:36:33.465567-04'  
15, 'QHE', '8', '2008-08-24 12:07:08.660519-04'  
15, 'QHS', '21', '2008-08-24 09:44:44.39354-04'  
15, 'QHE', '10', '2008-08-24 08:47:57.672058-04'  

我需要获取所有用户的列表以及各种用户元数据代码的最新值.我以编程方式做到了这一点,当然是神圣的缓慢.在SQL中我能想到的最好的方法是加入子选择,这也很慢,我必须为每个代码做一个.



1> Neall..:

这在PostgreSQL中实际上并不难,因为它的SELECT语法中有"DISTINCT ON"子句(DISTINCT ON不是标准SQL).

SELECT DISTINCT ON (code) code, content, createtime
FROM metatable
WHERE userid = 15
ORDER BY code, createtime DESC;

这会将返回的结果限制为每个唯一代码的第一个结果,如果按创建时间降序对结果进行排序,则会获得每个结果的最新结果.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有