为什么 MySQL 没有无限追随者?

Rav*_*i R 7 mysql sql window-functions

为什么我无法在 MySQL 中使用无限关注

我可以使用无界前置,对于相同的查询没有任何问题。

SELECT deptno,
       ENAME
       SAL,
       HIREDATE,
       last_value(HIREDATE) OVER (
           PARTITION BY deptno
           ORDER BY HIREDATE
           ROWS UNBOUNDED FOLLOWING
       )
FROM emp2
ORDER BY DEPTNO, HIREDATE;
Run Code Online (Sandbox Code Playgroud)

输出:

[42000][1064] 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解
FOLLWOING ) FROM emp2 ORDER BY DEPTNO, HIREDATE第 2 行附近使用的正确语法

Luk*_*der 2

有两种使用窗框规格的方法:

  • 显式指定帧下限并隐式用作current row上限
  • 明确指定下限和上限

请参阅手册:

frame_extent 值指示帧的起点和终点。您可以仅指定帧的开头(在这种情况下,当前行隐式为结尾)或使用 BETWEEN 指定两个帧端点

你想写的是这样的:

SELECT 
  deptno, ename, sal, hiredate,
  last_value (hiredate) OVER (
    PARTITION BY deptno 
    ORDER BY hiredate 
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
  )
FROM emp2
ORDER BY deptno, hiredate
Run Code Online (Sandbox Code Playgroud)