在我的學生表中我有一些學生的信息。爲什麼我的獨特功能在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'是***不是***的功能。 –