2016-06-11 11 views
1

3番目に高い給与を持つユーザーのすべての行の詳細を取得する必要があります。行全体と3番目に高い給与を選択

マイクエリ

select min(salary)as minsalary from (select * from userdetails 
     order by salary desc limit 3) as details 

電流出力: -

Array 
(
    [0] => stdClass Object 
    (
     [minsalary] => 300 
    ) 

) 

私はあまりにも単一のアレイの出力として、この配列と一緒に完全な行の詳細を取得する必要があります。どのように私のクエリを変更することができます。

助けてください。

答えて

2

このお試しください: - :

SELECT * FROM userdetails usr1 
WHERE (n-1) = ( 
    SELECT COUNT(DISTINCT(usr2.salary)) 
    FROM userdetails usr2 
    WHERE usr2.salary > usr1.salary) 
+0

はそんなにありがとう、私は2番目のクエリがどのように機能するかを知っているかもしれない、我々が通過する必要がない - nth Highest salaryは可能性を見つけるための別の方法

SELECT * FROM userdetails ORDER BY salary DESC limit 2,1; 

をnの値は動的ですか? – youv

+0

外部クエリの各レコードについて、内部クエリが実行され、現在の給与よりも給与が少ないレコードの数が返されます。 3番目に高い給料を探しているとき、インナークエリーが2(3-1)を返すとすぐに停止します。 –

関連する問題