假設下表:MySQL:選擇按行頻率排序的行
People
---------------------------
id | First Name | Last Name
我如何選擇最頻繁名字的ORDERed行?
假設下表:MySQL:選擇按行頻率排序的行
People
---------------------------
id | First Name | Last Name
我如何選擇最頻繁名字的ORDERed行?
select
count(firstname) as countFn,
firstname
from people
group by firstname
order by countFn desc
編輯:ID和姓氏從選擇
這不起作用,id和lastname不能在SELECT子句中,因爲它們不是GROUP BY子句的一部分。 – 2010-11-19 12:09:46
@Martin:這是MySQL,它們允許這種非標準行爲。 http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html – 2010-11-19 12:13:24
@Peter謝謝,不知道。 Quote:「服務器可以自由返回組中的任何值,所以結果是不確定的,除非所有的值都是相同的」。在這種情況下,這個答案中的查詢會爲每個firstName返回一個隨機的id和lastname。 Brrrrr,這是可怕的。 – 2010-11-19 12:17:22
去除如果你需要看到降序排列的名字的數量排序的所有名稱,那麼甲骨文這將工作:
select n.firstname, n.lastname, g.count
from
people n, (select firstname, count(*) count from people group by firstname) g
where n.firstname=g.firstname
order by g.count desc
不知道這是如何與例如MySQL的。
select p.*, t.count
from people p
, (select FirstName, count(1) as count
from people
group by FirstName) t
where p.FirstName = t.FirstName
order by t.count desc;
您是否只需要名字,或者您是否需要所有記錄,最先顯示最頻繁的名字? – 2010-11-19 11:53:52