在我的学生表中我有一些学生的信息。为什么我的独特功能在Oracle中不起作用?
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为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
我的代码是在这里,有什么不对?
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;
之所以你的代码不工作是因为'不同'适用于所有列选择列表。以你尝试过的方式将某些列从独特性中排除是没有意义的。相反,您需要确定每个电话号码具有最高ID的行,然后选择该行。有很多方法可以做到这一点,正如您提供的解决方案所示。哪一个性能最高的数据库和数据是由您来测试的。 – Boneist
因为'distinct'是***不是***的功能。 –