我正在尝试执行一个时间点查询以返回该时间点最后记录的数量。
基本上我有一个这样格式化的表格
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 和更大
在自动取款机上脑子炸了,无法想出正确的解决方案
最佳答案
此查询选择您想要的值之前的值:
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
关于mysql - 如果条件大于返回值,则选择上一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316484/