1

我在编写限制为 1的子查询以获得最高记录时发现了问题。

这是我的问题示例。

表主(id,set)

在此处输入图像描述

表详细信息(id、set、code)

在此处输入图像描述

我正在尝试获取表中每组的最新代码。

以下是我尝试过的查询,但得到一个错误,即相关子查询不支持限制 1,它应该包含 GROUP By 子句。

select id,set,(select code from detail where set=master.set order by id desc limit 1) from master;

结果会像

在此处输入图像描述

如果这是错误的方法,请帮助我,我是这个 vertica 数据库的新手。

谢谢。

4

1 回答 1

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 的行。

于 2013-10-31T23:19:04.607 回答