我有一个 MySQL 数据库和一个 transactions
表。我想检索过去一小时内的最后 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
我按此顺序需要它们的原因是因为我要在我的网站上显示实时数据。
我怎样才能做到这一点?感觉我在这里做了一些愚蠢的事情!
如有任何建议,我们将不胜感激。
最佳答案
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
关于MySQL 在设定时间内查询事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696775/