postgresql: 提取同类别的第一个排序记录

在数据中心中,我们记录了元数据的多个版本,现在需要提取所有元数据的最新版本,如何用一个sql来表达呢?

CREATE TABLE mdversion
(
  id serial NOT NULL,
  xml text NOT NULL DEFAULT ''::text,
  ts_created timestamp without time zone NOT NULL DEFAULT now(),
  uuid uuid NOT NULL,
  CONSTRAINT mdversion_pkey PRIMARY KEY (id)
)

 

第一感觉,是用group功能,但group不能对同类下的行进行排序,所以解决不了这个问题。

 

用这几个关键词搜索:postgresql group  get first,找到了一个直接相关的解决方案:

Select first row in each GROUP BY group?

解决方案很简单,就是用distinct on方法:

select distinct on (uuid) id from en.mdversion
order by uuid,ts_created desc

 

 


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注