如何在返回最新的非唯一值时从列中获取唯一值

时间:2015-07-09 14:06:02

标签: mysql sql group-by distinct

我有一组像这样的表:

post_id | post_content | page_id     
   1         etc...        7
   2         text...       5

changelog_id | post_id | page_id |   changelog_date    | changelog_type
      1               2        5       02/02/2015 11:05         3
      2               2        5       02/02/2015 11:15         2
      3               1        7       03/01/2015 18:15         3

我想回来:

select distinct post_id, post_content, changelog_type, changelog_date
from posts p 
inner join logs l on l.post_id = p.post_id
where p.page_id = 5

但不同的麦芽汁因为changelog_date不是唯一的。  我希望我的回归如下:

 post_id| post_content |  changelog_type   | changelog_date
   2        text...      02/02/2015 11:15         2

最近使用page_id输入post_id,每个post_id只输入一个结果。

我尝试了GROUP BY,但我得到了:

列'page.pageId'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

在我的实际使用中,我有6个表来获取信息,我使用内部联接来获取所有信息。我只需要通过每个post_id实例只获得一个来减少返回。

1 个答案:

答案 0 :(得分:0)

试试这个: -

select distinct post_id, post_content, changelog_type, MAX(changelog_date)
from posts p 
inner join logs l on l.post_id = p.post_id
where p.page_id = 5
group by post_id, post_content, changelog_type