【问题标题】:Select with 'negative' offset选择“负”偏移
【发布时间】:2013-10-29 18:57:13
【问题描述】:

我需要选择从今天开始的 40 行和 10 条日期较早的记录,按日期排序。

如果 MySQL 支持负偏移,它看起来像这样:

SELECT * FROM `mytable` WHERE `date` >= '2013-10-29' ORDER BY date LIMIT -10, 40;

不支持负偏移。我该如何解决这个问题?谢谢!!!

【问题讨论】:

    标签: mysql date select


    【解决方案1】:

    使用UNION 组合两个查询:

    (
      SELECT   *
      FROM     mytable
      WHERE    date < '2013-10-29'
      ORDER BY date DESC
      LIMIT    10
    ) UNION ALL (
      SELECT   *
      FROM     mytable
      WHERE    date >= '2013-10-29'
      ORDER BY date
      LIMIT    40
    )
    ORDER BY date -- if results need to be sorted
    

    【讨论】:

    • 行在子查询中排序,所以我认为不需要再次排序。
    • @ElonThan:首先,UNION 不保证结果集的顺序会被保留。其次,即使是这样,UNION 左侧的结果也会按日期降序排列; UNION 右侧的结果将按日期升序排列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多