我有三个与我网站的文章部分相关的表格。如果作者文章阅读的次数,我需要根据数量显示顶级作者。我使用基本的三个表来存储此信息。
Article
具有与文章相关的所有详细信息,作者信息存储在Authors
,当用户查看特定文章时,我会更新或插入新记录Popularity
。
以下是样本数据:
Articles
ArticleID Title Desc AuthorID
--------- ---------------- ---- --------
1 Article One .... 100
2 Article Two .... 200
3 Article Three .... 100
4 Article Four .... 300
5 Article Five .... 100
6 Article Six .... 300
7 Article Seven .... 500
8 Article Eight .... 100
9 Article Nine .... 600
Authors
AuthorID AuthorName
-------- ------------
100 Author One
200 Author Two
300 Author Three
400 Author Four
500 Author Five
600 Author Six
Popularity
ID ArticleID Hits
-- --------- ----
1 1 20
2 2 50
3 5 100
4 3 11
5 4 21
我正在尝试使用以下查询来获取 TOP 10 作者:
SELECT TOP 10 AuthorID
,au.AuthorName
,ArticleHits
,SUM(ArticleHits)
FROM Authors au
JOIN Articles ar
ON au.AuthorID = ar.ArticleAuthorID
JOIN Popularity ap
ON ap.ArticleID = ar.ArticleID
GROUP BY AuthorID,1,1,1
但这会产生以下错误:
消息 164,级别 15,状态 1,第 12 行
每个 GROUP BY 表达式必须包含至少一个不是外部引用的列。