【问题标题】:how to port this postgresql lag statement to mysql?如何将此 postgresql 滞后语句移植到 mysql?
【发布时间】:2016-03-16 22:09:24
【问题描述】:

想象一个只填满了 ID 并创建了时间戳的表,我将如何将其转换为 MySQL?:

SELECT created AS col_a , LAG (created) OVER ( ORDER by created ) AS col_b
FROM tester

【问题讨论】:

    标签: mysql sql window-functions


    【解决方案1】:

    您可以使用相关子查询:

    SELECT t1.created AS col_a,
           (SELECT created
            FROM tester AS t2
            WHERE t2.created < t1.created
            ORDER BY created DESC LIMIT 1) AS col_b
    FROM tester AS t1
    

    或者,使用变量:

       SELECT t1.created AS col_a, t2.created AS col_b
       FROM (
         SELECT created, @rn1 := @rn1 + 1 AS rn
         FROM tester
         CROSS JOIN (SELECT @rn1 := 0) AS var
         ORDER BY created) AS t1
       LEFT JOIN (
         SELECT created, @rn2 := @rn2 + 1 AS rn
         FROM tester
         CROSS JOIN (SELECT @rn2 := 0) AS var
         ORDER BY created
       ) AS t2 ON t1.rn = t2.rn + 1
    

    【讨论】:

    • 哇,我在试验变量方法,不知道相关子查询方法。我现在看到这是如何工作的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2015-11-21
    • 2016-04-06
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多