2016-08-18 3 views
0

n番目に高い給与についてたくさんの質問がありますが、なぜ私の構文が間違っているのか分かりません。コンパイラはN-1);の部分にエラーがあることを示していますが、なぜそれが間違っているのかわかりません。ありがとう!なぜN番目の最高給与SQLクエリ構文が間違っていますか?

+4

。しかし、あなたがそれを使うなら、あなたは '、'を使わないと思います。また、MySQLは、変数を使用して制限/オフセットを使用できる場所について、細心の注意を払うことができます。 – Uueerdo

+0

'LIMIT X OFFSET Y'(カンマなし)または' LIMIT X、Y'です。 – Andrew

+0

まだ同じエラーが発生しています:( –

答えて

0

あなたのデータに応じて、あなたが書いたようなクエリは期待した結果を返さないかもしれないという事実を無視します。その代わり、私は、構文エラーの修正に焦点を当てます:

  1. あなたはセミコロン内の関数本体が誤って解釈されないように何か他のものにデフォルトのセミコロン(;)区切り文字を再定義する必要があります。
  2. LIMITOFFSETを分離するコンマがあるべきではありません(たぶん、あなたはすでにそれをやっているが、あなたがそれを示していないことから、私は場合にはそれを言及は)
  3. MySQLはとして単一の値を期待しているようですOFFSETパラメータ。あなたが持っている方法で計算された表現が好きではないようです。その場合、SQLステートメントで使用する前に、必要な値を計算するだけで済みます。上記を適用

、ここでは次のようになります。私は通常、代わりに `LIMITオフセット、count`を使用して、`・オフセットフォームを使用していない

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 
// 
関連する問題