MySQL查询设定时间内的交易

MySQL Query Transactions Within Set Time

我有一个 MySQL 数据库和一个 transactions table。我想检索过去一小时内的最后 10 笔交易,按升序排序。

我运行的查询是;

SELECT TimeStamp, SerialNo 
FROM transactions 
WHERE TimeStamp > NOW() - INTERVAL 1 HOUR 
ORDER BY TimeStamp ASC 
LIMIT 10

这会生成如下交易列表;

20551094 2017-08-15 15:47:12
20551095 2017-08-15 15:47:15
20551096 2017-08-15 15:47:38
20551097 2017-08-15 15:47:51
20551098 2017-08-15 15:47:56
20551099 2017-08-15 15:48:23
20551100 2017-08-15 15:48:23
20551101 2017-08-15 15:48:26
20551102 2017-08-15 15:48:29

我知道有 许多 笔交易 15:48:29 之后我没有看到。

每当我删除 LIMIT 10 时,我都会收到数千笔交易,但我只想要最近的 10 笔交易。如下所示;

20551421 2017-08-15 16:47:55
20551422 2017-08-15 16:48:05
20551423 2017-08-15 16:48:06
20551424 2017-08-15 16:48:10
20551425 2017-08-15 16:48:15
20551426 2017-08-15 16:48:20
20551427 2017-08-15 16:48:26
20551428 2017-08-15 16:48:28
20551429 2017-08-15 16:48:30
20551430 2017-08-15 16:48:51

我需要按此顺序排列它们的原因是因为我要在我的网站上显示实时数据。

我怎样才能做到这一点?感觉我在做什么傻事!

如有任何建议,我们将不胜感激。

如果您想要 10 笔最新交易,您的代码应该是:

SELECT TimeStamp, SerialNo 
FROM transactions 
WHERE TimeStamp > NOW() - INTERVAL 1 HOUR 
ORDER BY TimeStamp DESC 
LIMIT 10

即您的 ORDER BY 应该是 DESC,因为您想要从最新到最早的时间戳,然后使用 LIMIT 10

获取最新的 10 个

I would like to retrieve the last 10 transactions within the past hour, sorted in ascending order.

您需要 ORDER BY TimeStamp DESC 才能获取最后一行。如果你想按升序显示它们,你可以使用子查询并在外部查询中反转顺序:

SELECT TimeStamp, SerialNo
FROM (
    SELECT TimeStamp, SerialNo 
    FROM transactions 
    WHERE TimeStamp > NOW() - INTERVAL 1 HOUR 
    ORDER BY TimeStamp DESC
    LIMIT 10
) sub
ORDER BY TimeStamp ASC