为什么我的第N个最高工资SQL查询语法错误?

时间:2016-08-18 18:10:14

标签: mysql sql

我知道有很多关于第n个最高薪水的问题,但我不明白为什么我的语法错了。编译器显示N-1);部分有错误,但我不明白为什么这是错误的。谢谢!

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      # Write your MySQL query statement below.
      SELECT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, OFFSET N-1
  );
END

1 个答案:

答案 0 :(得分:0)

我将忽略这样一个事实:根据您的数据,您编写的查询可能无法返回您期望的结果。相反,我将专注于修复语法错误:

  1. 您需要将默认的半冒号(;)分隔符重新定义为其他内容,以便在函数体内部 的半冒号不会被误解。 (也许你已经这样做了,但既然你没有表现出来,我就提一下)
  2. 不应该有逗号分隔LIMITOFFSET
  3. MySQL似乎期望单个值作为OFFSET参数。它似乎不像计算表达式那样。在这种情况下,您只需要在SQL语句中使用它之前计算所需的值。
  4. 应用上述内容,它的外观如下:

    delimiter //
    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      SET N = N - 1;
      RETURN (
          # Write your MySQL query statement below.
          SELECT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET N
      );
    END
    //