SQL - 选择单个字段的最大值而不是全部字段

时间:2012-04-08 18:37:41

标签: sql postgresql

运行一个查询,该查询应返回所有未解决的问题及其更新的上次更新时间。

这种方法的工作方式是将一个问题插入到问题表中,并将更新/答案插入到qUpdate表中,并使用原始问题的外键将它们关联起来。

这是我此刻写的查询,但这不是我想要的:

SELECT MAX (qUpdate.UpdateTime) AS LastUpdateTime, Question.ID FROM Question
LEFT JOIN qUpdate ON qID = qUpdate.qID WHERE Status = 'open'GROUP BY Question.ID, Question.Status;

结果:

     lastupdatetime     id
    2012-12-21 20:37:00;7
    2012-12-21 20:37:00;10
    2012-12-21 20:37:00;1000
    2012-12-21 20:37:00;5
    2012-12-21 20:37:00;2
    2012-12-21 20:37:00;9

正如您所看到的,它会返回所有问题的最新更新,而不是每个问题的最新更新。我理解为什么,但我不知道如何解决这个问题。

对不起,我的解释有点模棱两可..

基本上:

目前它返回上次更新时间,无论特定问题的更新时间是什么,即它找到所有这些更新时间的最大更新时间,并为所有打开的问题返回...

我希望它能列出所有未解决的问题以及该特定故障单的最后更新时间。

我正在使用Postgresql

2 个答案:

答案 0 :(得分:1)

看起来这是你的问题:

LEFT JOIN qUpdate ON qID = qUpdate.qID

应该是这样的:

LEFT JOIN qUpdate ON qID = Question.ID

答案 1 :(得分:0)

试试这个。您无需按状态分组。

SELECT MAX (qUpdate.UpdateTime) AS LastUpdateTime, Question.ID FROM Question
LEFT JOIN qUpdate ON qID = qUpdate.qID WHERE Status = 'open' GROUP BY Question.ID;