私の学生テーブルには、学生の情報があります。
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
ここで、すべての情報を選択したいと思います。電話の数が1より大きい場合、IDが最大の行を1つだけ返します。結果が欲しい:
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
私のコードはここにあります、何が問題なのですか?
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;
これを試して
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加