首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mysql中选择带有where条件的上一个id

在mysql中选择带有where条件的上一个id
EN

Stack Overflow用户
提问于 2014-04-19 15:26:48
回答 4查看 124关注 0票数 1

我正在使用下面的查询,根据一些日期之间的数据来选择上一只股票,但是如果自动增加的id不是顺序的(当删除一些记录时,它有间隙),下面的查询就会失败。

代码语言:javascript
复制
 SELECT in_stock, price 
 FROM $tablename  
 WHERE id=(SELECT (id-1) 
           FROM $tablename 
           WHERE sale_date BETWEEN '$from_date' AND '$to_date' 
           ORDER BY entered_date ASC 
           LIMIT 1)

帮我选择上一个in_stock

EN

回答 4

Stack Overflow用户

发布于 2014-04-19 16:07:04

如果ID不是按顺序排列的,您应该使用类似以下内容:

代码语言:javascript
复制
SELECT in_stock, price 
FROM $tablename  
WHERE entered_date=(
        SELECT MAX(entered_date) as max_date
        FROM   $tablename
        WHERE
          entered_date<(SELECT MIN(entered_date) as min_date
                        FROM $tablename 
                        WHERE
                          sale_date BETWEEN '$from_date' AND '$to_date')
      )
票数 1
EN

Stack Overflow用户

发布于 2014-04-19 17:33:59

这行得通,

代码语言:javascript
复制
SELECT in_stock, price 
 FROM $tablename 
 WHERE id < (SELECT min(id) 
              FROM $tablename 
              WHERE sale_date BETWEEN '$from_date' AND '$to_date') ORDER BY id DESC LIMIT 1
票数 1
EN

Stack Overflow用户

发布于 2014-04-19 17:05:28

尝尝这个

代码语言:javascript
复制
SELECT in_stock, price 
 FROM $tablename  
 WHERE id=(SELECT (SELECT MAX(id)
                    FROM $tablename
                    WHERE id < ( SELECT MAX(id)
                    FROM $tablename )) 
           FROM $tablename 
           WHERE sale_date BETWEEN '$from_date' AND '$to_date' 
           ORDER BY entered_date ASC 
           LIMIT 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23167257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档