首页 >> 中药大全

使用如何能在得到目标字段的

中药大全  2021年09月06日  浏览:5 次

使用distinct如何能在得到目标字段不重复值的同时返回其他字段值?

发现oracle提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。也就是distinct只能返回它的目标字段,而无法返回其它字段。

比如说:

一张表:

ID NAME

---------- --------------------

1 a

2 b

3 c

4 c

我们只要可以看懂 5 b

-------------------------------

怎么用sql查询得到这么个结果:

ID NAME

---------- --------------------

1 a

2 b

3 c

--------------------------------

我试过的结果:

select distinct name from table

得到的结果是:

name

a

b

c

好像达到效果了,可是,没有想要的id值呢,改查询语句:

select distinct name, id from table

结果会是:

id name

1 a

2 b

3 c

4 c

5 b

distinct同时作用了两个字段。

到底怎么办?

with temp as(

select 1 id,\'a\' name from dual

union all

select 2 id,\'b\' name from dual

union all

select 3 id,\'c\' name from dual

union all

select 4 id,\'c\' name from dual

union all

select 5 id,\'b\' name from dual

)

select distinct min(id) id, name from temp group by name;

结果:

id name

1 a

2 b

3 c

id name n

1 aa 13

2 aa 9

3 bb 51

4 bb 12

要选出id,name,n

你如何聚合?

select name,min(id),min(n) from tb

结果是

aa 1,9

bb 3,12

这是聚合结果,不是原始数据行。

获得原始数据行解法,我那个链接里已经有了。

当然用row_number也会有很多写法。

合肥好医院男科
眼睛干涩怎么办
湛江治白癜风哪里比较好
友情链接