为什么我的不同功能在Oracle中不起作用?

Sar*_*rly 1 sql oracle oracle11g

在我的学生表中,我有一些学生的信息.

id |phone        |name    |age    |sex 
---|-------------|------- |-------|-------
1  |13553841211  |name1   |11     |1 
2  |13553841212  |name2   |12     |0 
3  |13553841213  |name3   |13     |1 
4  |13553841214  |name4   |14     |0 
5  |13553841214  |name5   |15     |1 
Run Code Online (Sandbox Code Playgroud)

现在我想选择所有信息.如果手机的计数大于1,我只想返回id为max的一行.我想要结果:

id |phone        |name    |age    |sex 
---|-------------|------- |-------|-------
1  |13553841211  |name1   |11     |1 
2  |13553841212  |name2   |12     |0 
3  |13553841213  |name3   |13     |1 
5  |13553841214  |name5   |15     |1
Run Code Online (Sandbox Code Playgroud)

我的代码在这里,出了什么问题?

select name,phone,id from student where 
id in (select max(id) from student having count(phone)>=1);


select name,distinct(phone),id from student; 
Run Code Online (Sandbox Code Playgroud)

Joh*_*nHC 6

试试这个

select *
from
(
select name, id, phone, age, sex, row_number() over(partition by phone order by id desc) as stu_ord
from student
)
where stu_ord = 1
Run Code Online (Sandbox Code Playgroud)