MySQL 在设定时间内查询事务

标签 mysql select phpmyadmin sql-order-by

我有一个 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/

相关文章:

mysql - 更改名称中包含空格的表

sql - 选择*-优点/缺点

JavaScript 选择

mysql - 无法启动 phpMyAdmin。不断收到 #2002 套接字错误

MySQL 到 Redis - 导入和建模

Mysql:根据原因、历史状态和当前状态统计订单

mysql - SQL Group_concat 未获取所有数据

python - 为什么 peewee 在 mysql 选择查询中包含 'id' 列?

php - PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句行为不同

php - 'where clause' 中的未知列,而列存在 MySQL