0

问题是我们试图根据航班号显示前 5 名客户,所以我们没有获得前 5 名,而是获得前 5 名的航班号的计数,但只有一行(passengerid、passfname、passlname)

Select distinct p.PassengerID, p.PassFName, p.PassLName, Count(distinct 
f.FlightNum)
from Passenger p, Flight f, PassengerFlight x
where p.passengerID = x.passengerid
and f.flightnum = x.flightnum
Order by f.flightnum DESC
limit 5
;

最大航班数 显示搭乘航班总数的前 5 名乘客。

4

1 回答 1

0

DISTINCT有时在 MySQL 中有点不稳定。您可能最好使用 aGROUP BY并且仅DISTINCT用于COUNT,如下所示:

      SELECT p.PassengerID, 
             p.PassFName, 
             p.PassLName, 
             COUNT(DISTINCT f.FlightNum) AS numFlights
        FROM Passenger p, Flight f, PassengerFlight x
       WHERE p.passengerID = x.passengerid
         AND f.flightnum = x.flightnum
    GROUP BY p.PassengerID, p.PassFName, p.PassLName
    ORDER BY numFlights DESC
       LIMIT 5;
于 2019-04-29T14:06:49.913 回答