可以识别不同值和最大值的SQL查询

时间:2013-03-13 13:31:15

标签: mysql sql select distinct max

我需要一个sql语句来选择不同的记录,同时比较数据库中的最大或最新日期。这是我的表fleetschedule。它包含fleetschedule id,companyid,route,fleetnumber,traveldate。我试过SQL查询:

SELECT DISTINCT fleetnumber and max(traveldate), routeid, companyid, traveldate
FROM fleetSchedule

问题是它只提供1个值(最大值)。 我需要在最大/最晚日期旅行的所有不同的公共汽车(由fleetnumbers识别)。 我正在寻找的结果的样本数据:

fleetnumber routeid companyid   traveldate
MSH-17E     RT17    MSH         2009-07-26
FDH-17D     RT17    FDH         2009-07-26
MSH-17F     RT17    MSH         2009-07-25
MSH-27E     RT27    MSH         2009-08-24

表的样本使用:

fleetScheduleID companyID    routeID     travelDate fleetNumber
20                  MSH      RT17        2009-07-26     MSH-17E     
19                  MSH      RT17        2009-07-26     MSH-17D 
18                  MSH      RT27        2009-08-24     MSH-27E  

3 个答案:

答案 0 :(得分:1)

试试这个:

select * 
from fleetSchedule
where travelDate = ( select max(travelDate) from fleetSchedule )

答案 1 :(得分:1)

SELECT fleetNumber, 
       MAX(travelDate) AS travelDate, 
       SUBSTRING_INDEX(GROUP_CONCAT(routeID ORDER BY travelDate DESC), ',', 1) AS routeID, 
       SUBSTRING_INDEX(GROUP_CONCAT(companyID ORDER BY travelDate DESC), ',', 1) AS companyID
FROM fleetSchedule
GROUP BY fleetNumber;

答案 2 :(得分:0)

select fleetnumber, routeid, companyid, max(traveldate)
from fleetSchedule
group by fleetnumber, routeid, companyid

要明确的是,以上内容将为您提供每辆独特的公共汽车及其最近的旅行日期。如果您想要在整个表格中最近一次旅行的不同巴士列表,请使用以下

select distinct fleetnumber, routeid, companyid
from fleetSchedule
where traveldate = (select max(traveldate) from fleetSchedule)