V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
black11black
V2EX  ›  MySQL

mysql 搜索语句中 OFFSET 可以脱离 limit 单独使用吗?

  •  
  •   black11black · 2020-08-10 18:32:41 +08:00 · 2500 次点击
    这是一个创建于 1591 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,业务场景是,假设我有一个铆定日期为 2020 年 1 月 1 号

    我需要获取该日期往前 10 天开始,到最新日期为止的所有数据,

    即根据 2020-1-1 获取 2019-12-21 到 2020-8-1 (假设今天)的数据,有没有办法在一次搜索里完成?

    以前做这种实现都会拆成两条,用 UNION 搞定

    比如写成这样

    SELECT date FROM `table` WHERE date < '2020-1-1' ORDER BY date DESC LIMIT 10
    UNION
    SELECT date FROM `table` WHERE date >= '2020-1-1' ORDER BY date
    

    一直用的也挺好的,今天想起来问一下万能的 v 友们有没有更优雅的写法

    比如这种感觉的

    SELECT date FROM `table` WHERE date >= '2020-1-1' ORDER BY date OFFSET -10
    
    8 条回复    2020-08-12 00:15:37 +08:00
    AngryPanda
        1
    AngryPanda  
       2020-08-10 18:43:04 +08:00
    没看出来 union 的必要性。
    black11black
        2
    black11black  
    OP
       2020-08-10 18:44:44 +08:00
    @AngryPanda 日期不连贯,没法在业务逻辑中预先求出前 10 天的位置。
    lxk11153
        3
    lxk11153  
       2020-08-10 18:49:07 +08:00
    这样?
      //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
       mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last
    love
        4
    love  
       2020-08-10 18:51:02 +08:00
    limit 一个亿 不行吗??
    lxk11153
        5
    lxk11153  
       2020-08-10 18:54:35 +08:00
    fixed #3: 当我没说。
    Justin13
        6
    Justin13  
       2020-08-11 09:15:41 +08:00 via Android
    可以试试 Interval 做日期的偏移
    zhangysh1995
        7
    zhangysh1995  
       2020-08-11 10:41:40 +08:00
    SELECT date FROM `table` WHERE date BETWEEN '2019-12-21' AND '2020-8-1' ;
    black11black
        8
    black11black  
    OP
       2020-08-12 00:15:37 +08:00
    @Justin13 看了看,这种偏移应该跟业务逻辑里实现的效果是一样的,跟需求还是不太一致
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.