2011-01-08 45 views
0

我有一个表,看起来像我的SQL数据库:SQL查询BY

id type  radius 
------------------------- 
1  type1  0.25 
2  type2  0.59 
3  type1  0.26 
4  type1  0.78 
5  type3  0.12 
6  type2  0.45 
7  type3  0.22 
8  type3  0.98 

我有麻烦搞清楚如何定义SELECT查询返回每种类型的最低半径。

换句话说,我要寻找的结果将是:

结果:

id type  radius 
------------------------- 
1  type1  0.25 
6  type2  0.45 
7  type3  0.22 

我想我用ORDER BY从最低阶的半径来最高,抓住最低。不过,我也认为我需要在该类型上使用DISTINCT,但我无法弄清楚如何解决这个问题。

任何专家SQL'ers有任何想法这种类型的SELECT查询是可能的吗?任何帮助深表感谢!

非常感谢, 布雷特

回答

6

你想按类型分组,然后从那个类型的最小半径,如果你想在ID一起去按类型

SELECT type, MIN(radius) FROM table 
GROUP BY type 
ORDER BY type 

排序呢最小的,你不能这样做,因为我第一次输入:该ID是一个半随机的Id类型。可悲的是,你将不得不接受(从我的头顶)

SELECT t1.id,t1.type,t1.radius FROM table t1 
WHERE radius = ( 
    SELECT MIN(radius) FROM table 
    WHERE radius = t1.radius 
    ) 

(最终编辑:你要测试的是最后一个,基本的警告是,在第一次查询你不能可靠地取身份证,因为这将不具体属于具有最低半径型)

+0

太棒了!这非常合理。你能解释一下在这种情况下使用SORT BY吗?你认为有必要包括吗? – Brett 2011-01-08 12:59:31

+0

排序将按顺序放置类型,所以如果你有所有类型混合在你的数据库中,你会得到他们在结果 – jcuenod 2011-01-08 13:00:35

0

你必须分和GROUP结合BY

0

我认为这应该工作:

SELECT t1.id,t1.type,t1.radius FROM table GROUP BY type ORDER BY radius 

由于ORDER BY默认为升序最低价值应该是所展示的价值。