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)
试试这个
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)