2012-02-13 118 views
3

我想通过sql在oracle中获取表中的唯一值。桌子看起来像这样。SQL从选择中获取唯一值

表:具有列名称和值的ABC。

NAME Value 
AA 10 
B 40 
CC 50 
AA 70 
DD 80 
CC 90 
EE 100 
FF 120 
GG 130 
H 150 
EE 170 
I 180 
J 200 
K 210 
L 300 
GG 320 

我想抓住从ABC中的唯一值的列名,优选具有较低的值数例如的那些AA来了两次,所以我想抢AA一次,但价值较低的一次。

SELECT DISTINCT 
    (NAME), 
    VALUE 
FROM 
    ABC 
ORDER BY 
    NAME ASC; 

请帮忙。谢谢

回答

7
SELECT 
    NAME  AS NAME , 
    MIN(VALUE) AS VALUE 
FROM ABC 
GROUP BY NAME 
ORDER BY NAME ASC; 
+0

所以基本上与MSSQL相同:) – 2012-02-13 04:25:11

+0

@Dragos Toader,非常感谢您的回答,这似乎是工作。你可以建议从初学者到专家级别的任何好的SQL书籍。谢谢 – Nomad 2012-02-13 04:26:30

+0

我喜欢O'Reilly新闻学习SQL http://www.amazon.com/Learning-SQL-Alan-Beaulieu/dp/0596520832/ref=sr_1_8?s=books&ie=UTF8&qid=1329161802&sr=1-8对于中级到高级,乔Celko有很多好的SQL书籍http://www.amazon.com/s/ref=nb_sb_ss_i_2_7?url=search-alias%3Dstripbooks&field-keywords=joe+celko%27s+sql+for+smarties&x= 0&y = 0&sprefix = Joe + Cel%2Cstripbooks%2C190对于关系理论,DB Design,CJ Date是整个领域的父亲。 – 2012-02-13 19:35:58

1

我不知道oracle的语法,但是MSSQL是由(名称)组成的,并且min值就可以做到这一点,以及你已经在做的事情。

+0

感谢您的回答。 – Nomad 2012-02-13 04:25:35