使用Oracle仅在一列上选择distinct

使用Oracle仅在一列上选择distinct,oracle,Oracle,在一组列中只选择一个disctint列,这让我很恼火 假设我有一个查询:从A=1的表中选择A、B、C、D 这就是输出 A B C D 1 2 8 5 1 2 2 5 1 2 3 5 但我想要这样的东西: A B C D 1 2 8 5 我怎样才能做到这一点 谢谢大家 一种方法是按C列降序排列结果,然后只取第一行: SELECT * FROM ( SELECT A, B, C, D FROM TABLE_NAME WHERE A = 1 ORDER BY C D

在一组列中只选择一个disctint列,这让我很恼火

假设我有一个查询:从A=1的表中选择A、B、C、D

这就是输出

A B C D
1 2 8 5
1 2 2 5
1 2 3 5
但我想要这样的东西:

A B C D
1 2 8 5
我怎样才能做到这一点


谢谢大家

一种方法是按C列降序排列结果,然后只取第一行:

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

如果您想要一个C中数字最高的结果,请尝试下面的查询
从表中选择A、B、C、D,其中A=1,C从表中选择MAXC

你怎么知道你想要第三栏中的8?您真的想要最高值,即聚合和分组依据,还是其他一些规则?如果第2列或第4列也有不同的值,对于不同的a呢?为什么您认为8是C列的不同值?如果您有多行a=1,那么应该选择哪一行?或者你可以只选择其中一个,不管是哪一个?是的,对不起,我想要最大的数字,我想要一个在C列中有最大数字的单行。A必须是不同的,我试过使用MAX,但没有成功从表中选择A,B,MAXC,D,其中A=1组由A,B,D组成。这仍然是猜测,对吗?要求中没有说明除了A=1和C最大化之外,B和D的选择可以是随机的。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
Select 
    A, B, max(C) C, D
From table_name 
Group by A, B, D