我在website上有一个有效的图形,但是图形数据在24小时的时间范围内开始和结束,而实际上该时间应该从框架开始。我的查询看起来像:

select * where timestamp > 24hrs


如何查询时间范围内的所有数据,以及时间范围之前的第一个数据点?我不能使用恒定值,因为有时屏幕外的点是10小时,有时是10秒。

最佳答案

您可以选择以下时间范围之前的第一个数据点:

SELECT * FROM yourtable WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1


如果可能有多个相同的时间戳记,则可以随机选择一个-如果不可接受,请改用ORDER BY timestamp DESC, primary_key

因此,您可以通过UNION获得所需的内容:

/* This gets the first item previous to your range limitation */
SELECT
    * FROM yourtable
    WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1
UNION
/* Your original query */
SELECT
    * FROM yourtable
    WHERE timestamp > 24;


我在这里(根据您的问题)假设时间戳是一个整数,但是如果它是一个DATETIME列,则可以对其进行调整。

关于php - 如何使用上下文点查询MySQL图形数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14465504/

10-12 12:43
查看更多