2013-10-08 97 views
1

我需要一個查詢來根據最大的一對列來選擇一行。在下表中,如何選擇具有最高VALUE1的行,並在此第一個結果集中具有最高VALUE2的行?MySql在一個查詢中選擇一對列的最大值

+----+---------+---------+ 
| ID | VALUE1 | VALUE2 | 
+----+---------+---------+ 
| 1 |  1 |  1 | 
| 2 |  2 |  1 | 
| 3 |  5 |  4 | 
| 4 |  4 |  1 | 
| 5 |  4 |  3 | 
| 6 |  4 |  5 | 
| 7 |  5 |  1 | 
| 8 |  4 |  2 | 
| 9 |  4 |  6 | 
| 10 |  4 |  8 | 
| 11 |  5 |  3 | 

在這種情況下,應該返回ID = 3的行。

+1

WOT甲肝ütryed?例如,你有沒有嘗試過使用ORDER BY和LIMIT? – Strawberry

+0

其實我沒有嘗試過任何東西。我正在考慮SELECT MAX(VALUE1),MAX(VALUE2)......但我不認爲它會起作用。我想過ORDER BY/GROUP BY,但我想知道我是否可以得到一個結果。 – TrtG

+0

應該返回行3,因爲在具有VALUE1的最大值的行中,它是具有VALUE2的最大值的行。我想得到一個結果。 – TrtG

回答

8
SELECT * FROM tableName ORDER BY Value1 DESC, Value2 DESC LIMIT 1 
+0

這工作。我認爲沒有使用LIMIT就會有解決方案。如果沒有,我會接受你的答案。 – TrtG

0

限制是最好的選擇,但在這裏,如果你還是想一些其他的方法,那麼你可以使用子查詢

SELECT * FROM tableName where (Value1 + Value2) = (select max((Value1 + Value2)) 
from tableName) 
+0

將無法​​工作,因爲它將得到(4,8)而不是(5,4) – Mchl

相關問題