-3
這條where子句是如何工作的?你能讓我明白這個查詢的工作原理嗎?
SELECT ENAME,SAL
FROM EMP E
WHERE 3 > (
SELECT COUNT(*)
FROM EMP
WHERE SAL > E.SAL
);
這條where子句是如何工作的?你能讓我明白這個查詢的工作原理嗎?
SELECT ENAME,SAL
FROM EMP E
WHERE 3 > (
SELECT COUNT(*)
FROM EMP
WHERE SAL > E.SAL
);
該查詢將返回嚴格少於3位其他高薪僱員的所有員工。
例如,如果您有下面的一組員工薪金:
Fred $100
Bill $80
John $60
Jack $50
那麼你的查詢將返回每個人除了傑克,因爲傑克有3名員工誰擁有更高的薪水比他,但其他人擁有2個或更少。
注意:您的查詢嚴格執行而不是返回薪水最高的三名員工,因爲它不考慮重複的工資。如果您想查詢找到前3員工甚至在關係的存在,你可以試試這個:
SELECT ENAME,SAL
FROM EMP E
WHERE (
SELECT COUNT(DISTINCT SAL)
FROM EMP
WHERE SAL > E.SAL
) < 3
你真的應該增加樣本數據,除非您使用的是Oracle的樣表,即使在這種情況下,你可能想要縮小一點。 –
可能不是獲取該答案的最有效的查詢。 – jarlh