使用如何能在得到目标字段的
中药大全 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也会有很多写法。
合肥好医院男科眼睛干涩怎么办
湛江治白癜风哪里比较好

-
生瓜的功效与作用
2019-07-16
-
冰冷的身体让小小穴位来帮忙
2019-07-13
-
三大果蔬有助于痘痘的治疗
2019-07-07
-
中医教您冬天自制药酒
2019-07-07
-
晚餐吃不好会让你得上慢性病
2019-07-01
-
江西省中医药管理和健康政策高级研修班开班
2019-06-26