mysql - SQL 查询中的 ORDER BY 子句

标签 mysql sql sql-order-by

我有一个以以下结尾的 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 的派生表,并将其用于订购。

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 

关于mysql - SQL 查询中的 ORDER BY 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23975423/

相关文章:

mysql - 如何将一个表中的多个条目连接到 MySQL 中的单个关系状态?

Mysql like 和 BOOLEAN MODE (FULLTEXT) 搜索

c# - ADO.NET 与 Quartz.NET

sql - 比较 SQL 中的元组

mysql - 带有嵌套变量的奇怪 bash 行为

php - 使用 flume 进行分布式日志记录

mysql - 自定义 MYSQL 自定义排序顺序

sql - 如何在同一个 SELECT 语句中使用 DISTINCT 和 ORDER BY?

java - 使用sql查询进行动态搜索

mysql - 为什么只有一行插入到mysql表中?