我可能是愚蠢的,但我一直在查询和检查几个小时,我似乎无法找到答案,所以如果帖子多余,我提前道歉......但我可以'似乎找到了它的分身。
好的:我有一个带有下表的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项目,所以错误很耗时。任何人都可以帮助看看这个查询是否会做我期望的事情?
非常感谢。
答案 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