簡體   English   中英

SQL查詢中的ORDER BY子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM