mysql - 如果条件大于返回值,则选择上一条记录

标签 mysql select

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

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

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/

相关文章:

php - 创建没有 cpanel 访问权限的数据库

PHP ID 不通过 url

mysql - 关于 SQL 中时间戳的思考,比较当前年份

mysql - 列出mysql中所有表的序列号

css - 选择时如何更改从 Material ui中选择的背景颜色?

javascript - 选择在提交表单模式后获得双选项

mysql - 选择数据时mysql查询中的逻辑错误

php - 当指针恰好位于 mysql_num_rows 的 1/2 时,mysql_fetch_array 返回 false

MySql 选择两个变量

SQL "SELECT IN (Value1, Value2...)"将值变量传递到 GridView