我的桌子就像
P_ID | NAME | SRNO | Rate
1 | PR1 | 1 | 50
1 | PR1 | 2 | 60
1 | PR1 | 3 | 80 ----
2 | PR2 | 1 | 10
2 | PR2 | 2 | 20 ----
3 | PR3 | 1 | 70 ----
4 | PR4 | 1 | 25
4 | PR4 | 2 | 35 ----我想要详细说明谁的SrNo是最大的每种产品。
就像这样:
P_ID | NAME | SRNO | Rate
1 | PR1 | 3 | 80
2 | PR2 | 2 | 20
3 | PR3 | 1 | 70
4 | PR4 | 2 | 35我该怎么做?
发布于 2019-10-26 11:01:11
您可以使用关联子查询:
select t.*
from mytable t
where t.srno = (select max(srno) from mytable t1 where t1.p_id = t.p_id)有了(p_id, srno)上的索引,这应该是一个有效的解决方案。
最常见的解决方案是使用row_number()
select pid, name, srno, rate
from (
select t.*, row_number() over(partition by p_id order by srno desc) rn
from mytable t
) t
where rn = 1https://stackoverflow.com/questions/58570154
复制相似问题