我一直在試圖找到沒有使用限制的第三高薪表。在沒有限制的情況下在mysql中找到第三高薪水
在第二高的薪水的情況下,我使用
SELECT salary FROM table WHERE salary < (SELECT MAX(salary) order by salary desc
找到第三高限用我用
select salary from one order by salary desc limit 3,1
現在如何找到第n個薪水不使用限制?
我一直在試圖找到沒有使用限制的第三高薪表。在沒有限制的情況下在mysql中找到第三高薪水
在第二高的薪水的情況下,我使用
SELECT salary FROM table WHERE salary < (SELECT MAX(salary) order by salary desc
找到第三高限用我用
select salary from one order by salary desc limit 3,1
現在如何找到第n個薪水不使用限制?
嘗試此查詢,
SELECT *
FROM one one1
WHERE (3) = (SELECT COUNT(one2.salary)
FROM one one2
WHERE one2.salary >= one1.salary
)
這裏其中(n)喲可以將任意數量來返回最高的薪水。
但它的方式更多的時間,然後使用LIMIT –
小心擴展你做了什麼? –
如果有重複的記錄,這個查詢將會失敗,例如,如果兩個僱員有相同的工資,那麼它將返回0行。 –
如何用變量做它? 只是想知道爲什麼你不想使用LIMIT
。
SELECT salary
FROM
(
SELECT @rn := @rn + 1 rn,
a.salary
FROM tableName a, (SELECT @rn := 0) b
ORDER BY salary DESC
) sub
WHERE sub.rn = 3
它工作兄弟。你可以用plplain /詳細說明查詢。 – black
試試這個
SELECT *
FROM table t1
WHERE (3) = (
SELECT COUNT(DISTINCT(t2.Salary))
FROM table t2
WHERE t2.Salary >= t1.Salary
);
你能解釋一下計數如何在上面的條件下工作1 - 最高的3 - 第三最高的困惑。 –
做什麼用'LIMIT'問題?爲什麼要避免使用你需要的條款? –
沒有問題是有使用limit.but如果它可以完成計算任何第n行那麼它會很好。 – black
y downvotes?這個查詢沒有意義嗎? – black