PostgreSQL查询问题
我有一个包含多个表的DB,它也有多个行/列,布局类似于下图 站点位于名为sites的表中,ID和类型位于名为site_EQ的表中PostgreSQL查询问题,sql,postgresql,Sql,Postgresql,我有一个包含多个表的DB,它也有多个行/列,布局类似于下图 站点位于名为sites的表中,ID和类型位于名为site_EQ的表中 Site ID Type A0004 2 abc A0004 3 abcd A0004 4 abcde A0005 2 abc A0005 3 abcd A0005 4 abcde A0005 5 abc A0005 6 abcd A0005 7 abcde 本质上,我试图做的是通过站点查找每个站点的最高ID值并删除其他ID值来过滤结
Site ID Type
A0004 2 abc
A0004 3 abcd
A0004 4 abcde
A0005 2 abc
A0005 3 abcd
A0005 4 abcde
A0005 5 abc
A0005 6 abcd
A0005 7 abcde
本质上,我试图做的是通过站点查找每个站点的最高ID值并删除其他ID值来过滤结果,因此,如果例如A0010的ID为1-20,我希望结果显示出来
A0010 20 Bla
忽略
A0010 1 Bla
A0010 2 Bla
以此类推,但我不确定如何进行,因为没有设置ID的编号,它可以是1-3或1-30,对于一个只有1列不同的站点,基本上给我30个结果(我只想过滤到最高值)。这应该可以做到:
SELECT T1.Site, T1.ID, T1.Type
FROM SomeTable T1, (SELECT Site, MAX(ID) AS ID
FROM SomeTable
GROUP BY Site) T2
WHERE T2.Site = T1.Site
AND T2.ID = T1.ID
诀窍在于,如果有一个子查询为您提供站点+最大ID,则无法同时检索类型,尽管由于分组的原因,因此需要将其与实际表再次联接
在这里您可以找到关于表别名(T1
和T2
)的说明:试试:
select Site, ID, Type from
(select s.*, row_number() over (partition by Site order by ID desc) rn
from Site_EQ) q
where rn=1
抱歉,我可以从一个表中完成整个查询。。。我在查询中添加了不必要的信息,我觉得自己太愚蠢了。按最大(ID)+1描述限制x从站点组按站点顺序选择站点,最大(ID)+1作为ID;工作做得很好。请不要链接到手册的过时版本,使用“当前”而不是“8.2”(除非提出问题的用户明确说明版本)当然,我不是一个Postgre人,只是链接到我通过谷歌找到的第一个版本,而且别名在以后的版本中不太可能改变,更新了当前版本的链接,谢谢。我实际上是想用current这个词,而不是版本号;)啊,好吧,当然,我不知道这项工作,不是像我说的那样一个博士后:)还有,我们怎么知道他们不会改变下一个文档的结构,链接不会进入任何地方?