如果我有一個具有多個停靠點的巴士表,並且每個停靠記錄都有到達時間,那麼如何檢索並按最早停止時間排序巴士?按另一個表中的屬性排序SQL結果
_______ ________
| Buses | | Stops |
|-------| |--------|
| id | | id |
| name | | bus_id |
------- | time |
--------
我可以用下面的查詢做到這一點:
SELECT DISTINCT sub.id, sub.name
FROM
(SELECT buses.*, stops.time
FROM buses
INNER JOIN stops ON stops.bus_id = buses.id
ORDER BY stops.time) AS sub;
...但是這具有做2個查詢,不必從公交車在指定的所有字段的缺點SELECT DISTINCT子句。如果巴士表發生變化,這會變得特別煩人。
我想要做的是這樣的:
SELECT DISTINCT buses.*
FROM buses
INNER JOIN stops ON stops.bus_id = buses.id
ORDER BY stops.time;
...但是爲了得到DISTINCT buses.*
,我必須包括stops.time
有作爲,這讓我重複公交車不同的停止時間。
什麼是更好的方式來做這個查詢?
這是最簡單的答案,從維護的角度來看可能是最好的。謝謝! – Matt