2011-01-08 47 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默認爲升序最低價值應該是所展示的價值。