【发布时间】:2017-12-30 11:04:57
【问题描述】:
我正在尝试连接两个表,其中表一中的所有记录都有唯一的 id,而表二 可以包含表一中的 id 的多条记录(表一中的 id 可能没有任何表二中的对应记录)。
我只想加入表 2 中的最新记录。
SELECT id, MAX(date) AS DATE FROM table_two
Above 返回特定 id 的最新记录。
SELECT * FROM table_one t1 LEFT JOIN table_two t2 ON t1.id = t2.id
Above 返回连接的表,但也返回重复的表。
如何构造连接语句以仅返回表 2 中的最新记录?
类似这样的:
SELECT * FROM table_one t1 LEFT JOIN table_two t2 ON t1.id = t2.id, MAX(t2.date) AS date GROUP BY date
以上返回错误:ERROR: aggregate functions are not allowed in functions in FROM
我知道我可以使用子查询来获取最新记录,但不确定最有效的方法。
【问题讨论】:
-
什么版本的postgresql? (确定是否横向是一个选项,或者是否应该使用 row_Number 方法,或者我们是否只需要子查询。
-
@xQbert 版本为 9.5.7
标签: postgresql left-join aggregate-functions