2017-01-02 52 views
-5

我是在一組列的選擇只有一個disctint列惹毛了,選擇不同的只在一列與Oracle

比方說,我有這個疑問:SELECT A, B, C, D FROM TABLE WHERE A = 1

這是輸出

A B C D 
1 2 8 5 
1 2 2 5 
1 2 3 5 

不過,我想是這樣的:

A B C D 
1 2 8 5 

我怎麼能做到這一點?

謝謝大家!

+0

你怎麼知道你想要在第3欄8?你真的想要最高的價值(即聚合和分組)還是其他規則?而如果第二或第四列也有不同的值,對於不同的A? –

+1

爲什麼你認爲「8」是「C」列的「不同」值? –

+0

如果您有幾行「A = 1」,應選擇哪一行?或者你可以選擇「其中之一,哪一個並不重要」? – mathguy

回答

0

一種方法是命令由列C下降的結果,然後只取第一行:

SELECT * FROM (
    SELECT A, B, C, D 
    FROM TABLE_NAME 
    WHERE A = 1 
    ORDER BY C DESC 
) 
WHERE ROWNUM = 1; 

+1

這仍然是猜測,對吧?該要求並沒有說「除了A = 1'和'C'被最大化之外,'B'和'D'的選擇可以是隨機的。」 – mathguy

0

選擇A,B,最大值(C):C,d 從表名 組A,B,D

0

如果要在C中嘗試使用最高編號的結果,請嘗試以下查詢 SELECT A,B,C,D從表WHERE A = 1 AND C IN(SELECT MAX(C)FROM表) ;