在示例Xaprb http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/中,为每个组选择最大值
+--------+------------+-------+
| type | variety | price |
+--------+------------+-------+
| apple | gala | 2.79 |
| apple | fuji | 0.24 |
| apple | limbertwig | 2.87 |
| orange | valencia | 3.59 |
| orange | navel | 9.36 |
| pear | bradford | 6.05 |
| pear | bartlett | 2.14 |
| cherry | bing | 2.55 |
| cherry | chelan | 6.33 |
+--------+------------+-------+
select type, variety, price
from fruits
where price = (select min(price) from fruits as f where f.type = fruits.type);
+--------+----------+-------+
| type | variety | price |
+--------+----------+-------+
| apple | fuji | 0.24 |
| orange | valencia | 3.59 |
| pear | bartlett | 2.14 |
| cherry | bing | 2.55 |
+--------+----------+-------+但是如果我有一个有一定价格的水果,记录是重复的
+--------+----------+-------+
| type | variety | price |
+--------+----------+-------+
| apple | fuji | 0.24 |
| apple | fuji2 | 0.24 |
| orange | valencia | 3.59 |
| pear | bartlett | 2.14 |
| cherry | bing | 2.55 |
+--------+----------+-------+在这种情况下,如何才能为每个类型仅获取一条记录?
发布于 2011-09-19 18:14:45
只需按type分组
select type, MIN(variety) AS variety, MIN(price) AS price
from fruits
where price = (select min(price) from fruits as f where f.type = fruits.type);
GROUP BY type你得到的第一项是什么(按字母顺序)
顺便说一句:你也可以使用MAX,只要你喜欢
发布于 2011-09-19 18:14:49
使用GROUP BY子句-即
select type, variety, price
from fruits
where price = (select min(price) from fruits as f where f.type = fruits.type)
group by type;https://stackoverflow.com/questions/7469265
复制相似问题