2

我认为我什至不正确,但我会在排序前后显示表格。

排序前:

___________________
|  NAME   |  AGE   |
|==================|
| Ace     |   23   |
| May     |   15   |
| Ann     |   21   |
| May     |   38   |
| Ace     |   77   |
| Ann     |   35   |
|==================|

排序后:

 ___________________
|  NAME   |  AGE   |
|==================|
| Ace     |   77   |
| Ace     |   23   |
| May     |   38   |
| May     |   15   |
| Ann     |   35   |
| Ann     |   21   |
|==================|

所以,正如你所看到的,我按年龄降序排序,但它会将具有相同名称的那些配对在一起。我将如何在 MySQL 中执行此操作?

谢谢!

4

1 回答 1

8

您需要加入具有最大年龄的表。这是一种方法:

select t.*
from t join
     (select name, max(age) as maxage
      from t
      group by name
     ) tsum
     on tsum.name = t.name
order by tsum.maxage desc, t.name, t.age desc;

编辑:

我认为你的问题的答案是放在t.age desc条款中order by是一个演示代码的 SQL Fiddle。

至于您的第二个问题,该where子句将位于order by.

于 2013-09-06T02:41:04.083 回答