在数据中心中,我们记录了元数据的多个版本,现在需要提取所有元数据的最新版本,如何用一个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
发表回复