Postgresql中的复杂连接

时间:2014-06-03 14:23:03

标签: postgresql

我可能是愚蠢的,但我一直在查询和检查几个小时,我似乎无法找到答案,所以如果帖子多余,我提前道歉......但我可以'似乎找到了它的分身。

好的:我有一个带有下表的PostGreSQL数据库:

键(包含我感兴趣的两个字段,ID和名称) 和第二张桌子,钥匙。

数据包含......数据,按ID排序。 ID是唯一的,但每个Name都有多个ID。例如。如果比尔进入大楼,这是比尔的身份证1。玛丽进入大楼,玛丽进入ID 2,比尔重新进入大楼,比尔进入ID 3。

ID字段位于Key表和DATA表中。

我想做的是......找到

MAX(例如最后一个)ID,对于每个名称都是唯一的,以及与之关联的数据。

E.g。 Bill - Last Login: ID 10. Time: 123UTC Door: West等等。

所以......我正在尝试以下查询:

SELECT
 *
FROM 
  Data, Key
WHERE 
  Key.ID = ( 
    SELECT 
      MAX (ID)
    FROM 
      Key
    GROUP BY ID
)

这是踢球者,这些表中有800M项目,所以错误很耗时。任何人都可以帮助看看这个查询是否会做我期望的事情?

非常感谢。

1 个答案:

答案 0 :(得分:0)

获取每个名称的最大键。 。

select Name, max(ID) as max_id
from data
group by Name;

将其加入您的其他桌子。

select *
from key t1
inner join (select Name, max(ID) as max_id
            from data
            group by Name) t2
on t1.id = t2.max_id