MySQL中MAX函數與Group By一起使用的注意事項(轉)


mysql> select * from test;
+----+-------+------+-------+
| id | name  | age  | class | +----+-------+------+-------+ | 1 | qiu | 22 | 1 | | 2 | liu | 42 | 1 | | 4 | zheng | 20 | 2 | | 3 | qian | 20 | 2 | | 0 | wang | 11 | 3 | | 6 | li | 33 | 3 | +----+-------+------+-------+ 6 rows in set (0.00 sec)

如果想找到每個class里面的最大的age,則需要使用group by和max。

如下的sql語句,則輸出結果有錯誤:

mysql> select id,name,max(age),class from test group by class; +----+-------+----------+-------+ | id | name | max(age) | class | +----+-------+----------+-------+ | 1 | qiu | 42 | 1 | | 4 | zheng | 20 | 2 | | 0 | wang | 33 | 3 | +----+-------+----------+-------+ 3 rows in set (0.00 sec)

雖然找到的age是最大的age,但是與之匹配的用戶信息卻不是真實的信息,而是group by分組后的第一條記錄的基本信息。

如果我使用以下的語句進行查找,則可以返回真實的結果。

mysql> select * from (  -> select * from test order by age desc) as b  -> group by class; +----+-------+------+-------+ | id | name | age | class | +----+-------+------+-------+ | 2 | liu | 42 | 1 | | 4 | zheng | 20 | 2 | | 6 | li | 33 | 3 | +----+-------+------+-------+ 3 rows in set (0.00 sec)

原文來自:http://blog.csdn.net/magicharvey/article/details/21372813?utm_source=tuicool&utm_medium=referral


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM