小编Eni*_*say的帖子

选择在彼此日期范围内的连续行

有一个关联日期和名称的列表,我想选择:当日期之间的差异超过 1 个月时,名称具有多个日期的所有行。

例如:只有下面标有的条目 \*this*\

CREATE TABLE IF NOT EXISTS myTab (
    id          SERIAL PRIMARY KEY,     
    dateID      DATETIME DEFAULT 0,     
    name        VARCHAR(512)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO myTab 
    (dateID, name) 
VALUES
    ("20140811","Emmy"),    /*this*/
    ("20140922","Emmy"),    /*this*/
    ("20150920","Emmy"),    /*this*/
    ("20150922","Emmy"),
    ("20140722","Dave"),
    ("20140613","Stan"),
    ("20140622","Stan"),    /*this*/
    ("20151020","Stan"),    /*this*/
    ("20140305","Lora"),
    ("20140310","Lora");
Run Code Online (Sandbox Code Playgroud)

换句话说,标准是:

  • P artition按名称
  • Ø刻申日期
  • Ç ompare连续2行:IF diff > 1 MONTH THEN select both, ELSE skip

这是一个工作示例以及我基于SO 的另一个答案的尝试:

Rexester 工作示例和尝试

附加条件/提示/...

  • 具有相同名称的行不一定在另一个之后插入一次,使它们彼此间隔开+1 id。它们也不按日期插入。在上面的例子中,这样做只是为了可读性。在我真正的问题中,情况并非如此!
  • 在将您的建议应用于真实数据后,我注意到/*this_EXRA*/在上面的示例中添加了一个额外的条件。第 3stan …

mysql

4
推荐指数
1
解决办法
4523
查看次数

标签 统计

mysql ×1