mysql - SQL复杂的select语句?

标签 mysql date

我在 table 上记录了 Car#、Date、RunHours,如下所示:

Car#        Date         RunHours
125      2014-01-01       1250
125      2014-02-10       3250
215      2014-02-11       1400
215      2014-03-01       1800
125      2014-03-15       4100
215      2014-04-10       2500

我需要如下选择结果:

Car#        Date        Runhours   Previous_Date     Previous_RunHours
125      2014-01-01       1250           N/A               N/A
125      2014-02-10       3250       2014-01-01           1250
215      2014-02-11       1400           N/A               N/A
215      2014-03-01       1800       2014-02-11           1400
125      2014-03-15       4100       2014-02-10           3250
215      2014-04-10       2500       2014-02-11           1800

我该怎么做。

最佳答案

这是一种方法,使用相关子查询来获取先前的信息:

select t.*,
       (select t2.date
        from table t2
        where t2.car = t.car and t2.date < t.date
        order by t2.date desc
        limit 1
       ) as prev_date,
       (select t2.runhours
        from table t2
        where t2.car = t.car and t2.date < t.date
        order by t2.date desc
        limit 1
       ) as prev_runhours
from table t;

为了提高性能,您需要在table(car, date)上建立索引。

关于mysql - SQL复杂的select语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453736/

相关文章:

php - 根据外键编辑计划

mysql - 如何在 MySQL 中的输出文件分隔符中使用特殊字符

git - 如何根据每次提交的日期将两个分支 merge 为一个分支?

mysql - 如何在mysql数据库中存储泰卢固语,印地语等印度语言

mysql - 与 'RANDOM ACCESS MEMORY'相关的SQL语法错误

php - 一次插入多个数据

python - 更改日期列中的年份

mysql - 将日期字段转换为仅返回日期字段

java.text.ParseException : Unparseable date: convert mm/dd/yyyy string to a date 异常

java - SQLite 分组并按工作类次排序