[英]ORDER BY clause in SQL query
我有一個以以下結尾的SQL查詢:
...
ORDER BY event_date ASC
這樣我得到以下結果:
|-------------------------------------|
| location_id | event_date | event_id |
|-------------------------------------|
| 112 | 2014-06-01 | 501 |
|-------------------------------------|
| 19 | 2014-06-04 | 508 |
|-------------------------------------|
| 112 | 2014-06-17 | 667 |
|-------------------------------------|
| 19 | 2014-07-07 | 434 |
|-------------------------------------|
我想知道是否可以使用其他ORDER BY
子句來獲得以下結果:
|-------------------------------------|
| location_id | event_date | event_id |
|-------------------------------------|
| 112 | 2014-06-01 | 501 |
|-------------------------------------|
| 112 | 2014-06-17 | 667 |
|-------------------------------------|
| 19 | 2014-06-04 | 508 |
|-------------------------------------|
| 19 | 2014-07-07 | 434 |
|-------------------------------------|
編輯:
換句話說,我想要最早的event_date
(具有location_id
= X),然后是所有其他具有location_id
= X的行,它們由event_date
。
然后是下一個最早的event_date
(具有location_id
!= X = Y),以及所有具有location_id
= Y的行,均由event_date
。
等等...
您可以聯接到派生表上,該表計算每個位置的第一個event_date並將其用於排序。
SELECT E1.*
FROM Events E1
JOIN (SELECT location_id,
MIN(event_date) AS min_date
FROM Events
GROUP BY location_id) AS E2
ON E1.location_id = E2.location_id
ORDER BY E2.min_date,
E1.location_id, -- In case two locations have same MIN(event_date)
E1.event_date
您應該使用此ORDER BY子句獲取所需的結果:
ORDER BY location_id DESC, event_date ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.