1

我正在尝试进行时间点查询以返回该时间点最后记录的数量。

基本上我有一个这样格式化的表格

id | other_id | quantity | created
 1     1           5       20
 2     1           2       22
 3     1           1       25
 4     1           8       90

如果创建的查询是 60,我想返回 25 或更高的创建数量,或者从查询创建以来最近已知的数量。

SELECT * FROM table
WHERE created >= 60
AND other_id = 1
ORDER BY ID ASC

返回 ID:4 但我希望在 60 创建 ID:3 但如果查询的创建是 25 我想返回 25 或更大

脑筋急转弯,想不出正确的解决办法

4

2 回答 2

1

此查询选择您想要的值之前的值:

SELECT MAX(created)
FROM yourtable
WHERE other_id = 1
AND created <= 60

然后,您可以将其用作主查询中的子查询:

SELECT *
FROM yourtable
WHERE created >=
(
    SELECT IFNULL(MAX(created), -1)
    FROM yourtable
    WHERE other_id = 1
    AND created <= 60
)
AND other_id = 1
ORDER BY ID ASC
于 2012-11-09T21:49:58.957 回答
1
SELECT * FROM table
WHERE id >= (
  SELECT id FROM table WHERE created <= 60
  AND other_id = 1
  ORDER BY id DESC LIMIT 1
)
AND other_id = 1
ORDER BY id ASC
于 2012-11-09T21:51:43.513 回答