我在编写带有限制1 的子查询时遇到问题,以获得最高记录。
这是我的问题示例。
表大师(id,set)
表格明细(ID,设置,代码)
我正在尝试获取 Master 表中每个集的最新代码。
以下是我尝试的查询,但得到的错误是相关子查询不支持限制1,它应该包含GROUP By子句。
select id,set,(select code from detail where set=master.set order by id desc limit 1) from master;
结果就像是
请帮助我,如果这是错误的方式,我是这个vertica数据库的新手。
是的。答案 0 :(得分:2)
我不确定该特定错误,但您可以使用rank()
解析函数生成如下结果:
select id, set, code from (
select M.id, D.set, D.code, rank() over (partition by D.set order by D.id desc) as rank
from detail as D
right outer join master as M
on D.set = M.set) as ranks
where rank = 1
order by id;
内部子查询使用rank()函数为集合中的每一行分配排名。外部查询只选择排名为1的行。