1

個別のレコードを選択すると同時に、データベースから最大または最新の日付を比較するためのSQLステートメントが必要です。これは私のテーブルfleetscheduleです。fleetscheduleid、companyid、route、fleetnumber、traveldateが含まれています。私が試したSQLクエリ:

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

問題は、1つの値(最大)しか与えないことです。最大/最新の日付で移動したすべての個別のバス(フリート番号で識別)が必要です。私が探している結果のサンプルデータ:

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  
4

3 に答える 3

1

これを試して:

select * 
from fleetSchedule
where travelDate = ( select max(travelDate) from fleetSchedule )
于 2013-03-13T13:34:42.077 に答える
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;
于 2013-03-13T13:36:28.893 に答える
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)
于 2013-03-13T13:33:51.217 に答える