我需要一个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
答案 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)