爲行錯誤值這是我的表結構:SQL MAX()函數返回最大值
Anees 1000.00
Rick 1200.00
John 1100.00
Stephen 1300.00
Maria 1400.00
我試圖找到MAX(工資)和人的名字。
這是我使用
選擇MAX(工資),EMP_NAME 從EMP1
查詢我得到1400.00 and Anees.
雖然1400是正確的ANEES是錯誤的,它應該是瑪麗亞。我需要做什麼更改
爲行錯誤值這是我的表結構:SQL MAX()函數返回最大值
Anees 1000.00
Rick 1200.00
John 1100.00
Stephen 1300.00
Maria 1400.00
我試圖找到MAX(工資)和人的名字。
這是我使用
選擇MAX(工資),EMP_NAME 從EMP1
查詢我得到1400.00 and Anees.
雖然1400是正確的ANEES是錯誤的,它應該是瑪麗亞。我需要做什麼更改
戈登給了一個解釋,爲什麼,並得到想要你想要的最簡單的方法。但是,如果你因爲某些原因想用MAX()
你可以做這樣的
SELECT emp_name, salary
FROM emp1
WHERE salary =
(
SELECT MAX(salary) salary
FROM emp1
)
輸出:
| EMP_NAME | SALARY | --------------------- | Maria | 1400 |
下面是SQLFiddle演示
MySQL允許您在select
語句中包含不在聚合函數中且不在group by
子句中的列。返回任意值。
最簡單的方式做你想做的是:
select t.*
from t
order by salary desc
limit 1;
當兩名僱員的最高工資相等時會發生什麼 –
你會得到其中一個。 –
這是一個常見的問題/問題與MySQL因爲它不需要*使用在group-by中指定的所有聚合列或列:這是*不正確的混合聚合查詢*。在這種情況下,MySQL可以爲該列選擇任何*值並將其與聚合值一起返回。 – user2246674
查看http://stackoverflow.com/questions/2081211/mysql-select-maxscore-doesnt-return-the-relevant-row-data-how-to-solve-the/2081287查看重複的問題,更好的解釋,以及這個查詢的解決方案。替代解決方案可以看到http://stackoverflow.com/questions/7604893/sql-select-row-from-table-where-id-maxid?lq=1和http://stackoverflow.com/questions/537223/mysql -control-which-row-is-by-group-by?lq = 1 – user2246674