mysql查询按时间选择最后一条记录

约翰·BB

我有这样的表:table exchaneRate

╔════╦══════════╦══════════════╦═════╦══════╦══════════════════╗
║ id ║ officeID ║ currencyCode ║ buy ║ sell ║ startDateTime    ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 01 ║  off_1   ║       AA     ║  65 ║  75  ║ 2015═10═01 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 02 ║  off_1   ║       BB     ║  64 ║  73  ║ 2015═10═01 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 03 ║  off_1   ║       AA     ║  55 ║  65  ║ 2015═09═25 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 04 ║  off_1   ║       BB     ║  54 ║  63  ║ 2015═09═25 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 05 ║  off_1   ║       AA     ║  30 ║  42  ║ 2015═09═15 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 06 ║  off_1   ║       BB     ║  40 ║  48  ║ 2015═09═15 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 07 ║  off_2   ║       AA     ║  65 ║  75  ║ 2015═10═01 12:00 ║
╠════╬══════════╬══════════════╬═════╬══════╬══════════════════╣
║ 08 ║  off_2   ║       BB     ║  65 ║  75  ║ 2015═10═01 12:00 ║
╚════╩══════════╩══════════════╩═════╩══════╩══════════════════╝

我有这样的要求来选择数据:

    select `currencyCode`, `buy`, `sell` from `exchangeRate` 
where `officeID` = 'off_1' and startDateTime <= '2015-09-30 00:00';

我想要这个结果:

╔══════════════╦═════╦══════╗
║ currencyCode ║ buy ║ sell ║
╠══════════════╬═════╬══════╣
║       AA     ║  55 ║  65  ║
╠══════════════╬═════╬══════╣
║       BB     ║  54 ║  63  ║
╚══════════════╩═════╩══════╝

但是请求从表返回所有记录AA,BB,AA,BB,AA,BB...。但是我currencyCode为此只需要最后一个记录officeID我怎样才能做到这一点?

蒂姆·比格莱森(Tim Biegeleisen)

我将采用以下方法。内部查询currencyCode使用您的时间范围确定每个记录所需的记录exchangeRate然后,通过对该内部查询过滤原始表,INNER JOIN以提供所需的输出。

SELECT t1.currencyCode, t1.buy, t1.sell
FROM exchangeRate t1 INNER JOIN
(
    SELECT currencyCode, MAX(startDateTime) AS maxTime
    FROM exchangeRate
    WHERE startDateTime <= '2015-09-30 00:00' AND officeID = 'off_1'
    GROUP BY currencyCode
) t2
ON t1.currencyCode = t2.currencyCode AND t1.startDateTime = t2.maxTime

单击下面的正在运行的演示。

SQLFiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mysql查询按时间选择最后一条记录

来自分类Dev

MySQL选择最后一条记录并更新它

来自分类Dev

MySQL选择最后一条记录并更新它

来自分类Dev

MySQL查询获取最后一条记录然后加入

来自分类Dev

MySQL JOIN最后一条记录

来自分类Dev

PHP查询选择一条记录

来自分类Dev

在mysql子查询中按日期获取第一条记录和最后一条记录的值

来自分类Dev

如何从Cassandra中的时间序列中选择最后一条记录?

来自分类Dev

分组并根据创建的时间戳选择最后一条记录

来自分类Dev

选择日期和时间列的最后一条记录

来自分类常见问题

在分组查询中选择以返回该分组的最后一条记录

来自分类Dev

在分组查询中选择以返回该分组的最后一条记录

来自分类Dev

Rails查询选择具有不同列的最后一条记录

来自分类Dev

SQL Server:从联接查询中仅选择每个客户的最后一条记录

来自分类Dev

MySQL:在表中选择第一条记录,最后一条记录和200条均匀间隔的记录

来自分类Dev

MySQL:选择具有最后一条记录ID的组的计数

来自分类Dev

选择每个人的最后一条记录

来自分类Dev

为每个ID选择每月的最后一条记录

来自分类Dev

如何选择每个ID的最后一条记录

来自分类Dev

选择最后一条具有雄辩价值的记录

来自分类Dev

Linq查询以获取最后一条记录

来自分类Dev

Linq查询以获取最后一条记录

来自分类Dev

在MySQL的下一条记录中插入最后一条记录字段

来自分类Dev

Mysql Query按最后一条记录和第一条记录分组

来自分类Dev

mysql加入一对多最后一条记录

来自分类Dev

MySql-从18446744073709551615记录中选择一条记录

来自分类Dev

MySql-从18446744073709551615记录中选择一条记录

来自分类Dev

获取mysql表中的最后一条记录

来自分类Dev

分组mysql表时检索最后一条记录

Related 相关文章

  1. 1

    mysql查询按时间选择最后一条记录

  2. 2

    MySQL选择最后一条记录并更新它

  3. 3

    MySQL选择最后一条记录并更新它

  4. 4

    MySQL查询获取最后一条记录然后加入

  5. 5

    MySQL JOIN最后一条记录

  6. 6

    PHP查询选择一条记录

  7. 7

    在mysql子查询中按日期获取第一条记录和最后一条记录的值

  8. 8

    如何从Cassandra中的时间序列中选择最后一条记录?

  9. 9

    分组并根据创建的时间戳选择最后一条记录

  10. 10

    选择日期和时间列的最后一条记录

  11. 11

    在分组查询中选择以返回该分组的最后一条记录

  12. 12

    在分组查询中选择以返回该分组的最后一条记录

  13. 13

    Rails查询选择具有不同列的最后一条记录

  14. 14

    SQL Server:从联接查询中仅选择每个客户的最后一条记录

  15. 15

    MySQL:在表中选择第一条记录,最后一条记录和200条均匀间隔的记录

  16. 16

    MySQL:选择具有最后一条记录ID的组的计数

  17. 17

    选择每个人的最后一条记录

  18. 18

    为每个ID选择每月的最后一条记录

  19. 19

    如何选择每个ID的最后一条记录

  20. 20

    选择最后一条具有雄辩价值的记录

  21. 21

    Linq查询以获取最后一条记录

  22. 22

    Linq查询以获取最后一条记录

  23. 23

    在MySQL的下一条记录中插入最后一条记录字段

  24. 24

    Mysql Query按最后一条记录和第一条记录分组

  25. 25

    mysql加入一对多最后一条记录

  26. 26

    MySql-从18446744073709551615记录中选择一条记录

  27. 27

    MySql-从18446744073709551615记录中选择一条记录

  28. 28

    获取mysql表中的最后一条记录

  29. 29

    分组mysql表时检索最后一条记录

热门标签

归档