2011-04-06 35 views
0

試圖獲得:與獎學金一起獲得最多總獎金的前20名PIs與他們所屬的大學合作。獲得前20位的MySQL查詢錯誤

MySQL的:SELECT award, pi, org FROM tbl WHERE groupby(award) LIMIT 20

表: Table

它似乎不喜歡我的組。這裏有什麼問題?

+1

您需要聚合的東西,如果你使用GROUPBY HTTP://dev.mysql。 com/doc/refman/5.0/en/group-by-functions.html – 2011-04-06 21:56:42

+0

請幫助我的問題。 – Jshee 2011-04-06 21:57:49

+0

我還沒有聽說過'groupby'函數;它有什麼作用? (與'GROUP BY'子句不同,也就是說)。 – 2011-04-06 23:01:08

回答

0

您需要組的東西,繼承人你的努力做到:

SELECT distinct award, pi, org FROM tbl LIMIT 20; 
0

不能包括通過查詢不是一個集合列(即計數)或不分組的一組列的部分 - 這應該工作:

SELECT count(*) as ArwardCount, pi 
FROM tbl 
GROUP BY pi 
ORDER BY ArwardCount desc 
LIMIT 0, 20; 
+0

你可以用MySQL – RichardTheKiwi 2011-04-06 22:33:21

+0

gaah我想我一直被SQL Server停留時間過長;-( – BrokenGlass 2011-04-06 22:34:25

0

隨着

SELECT award, pi, org FROM tbl WHERE groupby(award) LIMIT 20 

你會得到SQL Error (1305): FUNCTION xxx.groupby does not exist

您所需要的,而不是之下,獨自承擔pi是獨一無二的,組織是在同一個表(去歸一化)

SELECT pi, org, count(award) awardcount 
FROM tbl 
GROUP BY pi, org 
ORDER BY awardcount DESC 
LIMIT 20;