在SQL中创建查询需要一些帮助吗?

时间:2012-04-17 17:08:15

标签: postgresql

ID|message| UpdateTime| TicketID| StaffID

10008;"Yes, it is!";"2012-04-15 16:15:00";1008;660
10013;"Thanks for swift reply!";"2012-04-15 17:15:00";1008;660

当我写这两个查询时,你告诉我:

Select MAX(UpdateTime) from TicketUpdate where ticketUpdate.id = 10008;    
Select MIN(UpdateTime) from TicketUpdate where ticketUpdate.id = 10008;

如果有2个不同的时间,即使在我的数据库中输出也相同。 你能告诉我这里可能出现什么问题吗?

1 个答案:

答案 0 :(得分:1)

ID似乎是此表的唯一标识符。相反,您似乎希望使用TicketID来查找每张票的最大值和最小值。

例如,要为TicketID = 1008找到它们:

SELECT MAX(UpdateTime) FROM TicketUpdate WHERE TicketUpdate.TicketID = 1008;    
SELECT MIN(UpdateTime) FROM TicketUpdate WHERE TicketUpdate.TicketID = 1008;

或在一个查询中:

SELECT 
  MAX(UpdateTime) AS newest,
  MIN(UpdateTime) AS oldest
FROM TicketUpdate
WHERE TicketID = 1008;

要获取每个TicketID的最新和最旧版本,请使用GROUP BY并省略WHERE子句。

SELECT 
  TicketID,
  MAX(UpdateTime) AS newest,
  MIN(UpdateTime) AS oldest,
FROM TicketUpdate
GROUP BY TicketID

如果使用ID进行查询,则始终会获得相同的行,因为每个ID似乎只有一个唯一标识其行的值。