【发布时间】:2013-06-24 14:31:21
【问题描述】:
这是一个不止一次在这里问过的问题,但是我找不到我要找的东西。我正在寻找连接两个表,其中连接的表由按日期时间排序的最后一个寄存器设置,直到这里一切正常。
我的问题是连接表上有两条以上的记录,让我给你看一个示例
table_a
-------
id
name
description
created
updated
table_b
-------
id
table_a_id
name
description
created
updated
一开始我做的是:
SELECT a.id, b.updated
FROM table_a AS a
LEFT JOIN (SELECT table_a_id, max (updated) as updated
FROM table_b GROUP BY table_a_id ) AS b
ON a.id = b.table_a_id
直到这里我得到了 cols,a.id 和 b.updated。我需要完整的table_b cols,但是当我尝试向我的查询添加一个新的 col 时,Postgres 告诉我我需要将我的 col 添加到一个 GROUP BY 条件才能完成查询,结果不是我正在寻找。
我正在尝试找到获得此列表的方法。
【问题讨论】:
-
您不应接受语法错误的答案。这是在愚弄其他寻求帮助的人。
-
老实说,这两个问题都对我有用,因为我对这个问题没有足够的知识,我不知道其中一个是正确的还是语法上的,我只是接受第一个,阅读后,我正在考虑使用您的解决方案并了解更多信息,但一定不能正确选择答案。
-
“两者”?一共有三个答案,你接受了一个不起作用的答案。
-
@Erwin,你的回答和我接受的另一个为我工作,另一个与我选择的相似
-
select distinct on(table_a_id) as table_a_id无法工作。这是无效的。如果你想接受这个答案,那取决于你。但是请注意,然后您将其修复。如果您无法自行编辑(您可能还没有权限),请留言让 Gordon 修复它。无论如何,我会自己做,只是想传达信息。
标签: sql postgresql greatest-n-per-group