特别选择行

时间:2012-09-05 21:36:31

标签: mysql sql

让我们假设我的数据库表结构类似于

|   items    |   weight |
|============|==========|
|   item_1   |   50     |
|   item_2   |   90     |
|   item_2   |   45     |
|   item_2   |   60     |
|   item_3   |   40     | 

在select语句中,我想仅显示一个权重最高的项目,也按高度排序。所以结果应该是:

|   items    |   weight |
|============|==========|
|   item_2   |   90     |
|   item_1   |   50     |
|   item_3   |   40     | 

我试过像

这样的东西
SELECT DISTINCT items, weight FROM mytable ORDER BY weight DESC

但它没有用,因为结果实际上是截然不同的。

如何进行选择?

4 个答案:

答案 0 :(得分:4)

您希望按items 分组您的记录。

SELECT   items, MAX(weight)
FROM     mytable
GROUP BY items
ORDER BY MAX(weight) DESC

sqlfiddle上查看。

答案 1 :(得分:3)

select items, max(weight)
from mytable
group by items

答案 2 :(得分:2)

SELECT items, MAX(weight) AS weight FROM mytable GROUP BY items ORDER BY weight DESC

Aggregate Functions SELECT MAX语法从列中获取最大的结果,只是使用它会过滤掉一个具有最高权重的结果,这就是为什么然后使用GROUP BY将结果分成匹配结果和{{{ 1}}适用于所有这些。

MAX也有订购结果的便利副产品(但总是GROUP BY),但是在这种情况下,它会订购错误的列,因此您必须添加自己的{{1} }。

我使用AS为max列创建别名以保持整洁,否则你必须记住该列将被称为ASC

答案 3 :(得分:1)

你想要一个小组:

select item, max(weight) as weight
from mytable
group by item
order by 2 desc