避免一栏重复
Avoiding Repetition from one column
我有一个table
sid id rNum str power con1 rc
15 287 6 Grit 0 0 225
15 288 7 Short 0 0 225
15 289 8 Grade 0 0 225
16 224 3 Mega 0 1 222
17 432 7 Server 0 0 656
我希望得到的结果是
sid id rNum str power con1 rc
15 287 6 Grit 0 0 225
16 224 3 Mega 0 1 222
17 432 7 Server 0 0 656
这意味着我想用组中的第一个值
显示唯一值 "sid"
我已经尝试了独特的但没有得到想要的结果。
您可以使用子查询进行过滤。假设每个 sid
的 first 记录是具有最小 id
的记录,那就是:
select t.*
from myable t
where t.id= (select min(r1.id) from mytable t1 where t1.sid = t.sid)
或者,您也可以使用 row_number()
:
select *
from (
select t.*, row_number() over(partition by sid order by id) rn
from mytable t
) t
where rn = 1
用row_number()window函数:
select t.sid, t.id, t.rNum, t.str, t.power, t.con1, t.rc
from (
select *, row_number() over (partition by sid order by id) rn
from tablename
) t
where t.rn = 1
我有一个table
sid id rNum str power con1 rc
15 287 6 Grit 0 0 225
15 288 7 Short 0 0 225
15 289 8 Grade 0 0 225
16 224 3 Mega 0 1 222
17 432 7 Server 0 0 656
我希望得到的结果是
sid id rNum str power con1 rc
15 287 6 Grit 0 0 225
16 224 3 Mega 0 1 222
17 432 7 Server 0 0 656
这意味着我想用组中的第一个值
显示唯一值 "sid"我已经尝试了独特的但没有得到想要的结果。
您可以使用子查询进行过滤。假设每个 sid
的 first 记录是具有最小 id
的记录,那就是:
select t.*
from myable t
where t.id= (select min(r1.id) from mytable t1 where t1.sid = t.sid)
或者,您也可以使用 row_number()
:
select *
from (
select t.*, row_number() over(partition by sid order by id) rn
from mytable t
) t
where rn = 1
用row_number()window函数:
select t.sid, t.id, t.rNum, t.str, t.power, t.con1, t.rc
from (
select *, row_number() over (partition by sid order by id) rn
from tablename
) t
where t.rn = 1