2015-10-14 63 views
-1

我想找到寫入數量最多的書籍的前10名作者。MYSQL - 使用SUM

我有兩個表,如下所示:

作者表:

author_name 
publisher_key 

出版表:

publisher_id 
publisher_key 
title 
year 
pageno 

要查找的結果,我嘗試使用下面的查詢:

SELECT a.author_name, SUM(p.pageno) 
FROM author a JOIN publication p ON a.publisher_key = p.publisher_key 
GROUP BY a.author_name 
LIMIT 10; 

我不知道爲什麼,當我運行此查詢它需要年齡雖然記錄的數量只有200

+0

如此,你爲什麼查詢花費這麼長的問題? 「創作」和「出版」表有多少條記錄? –

+0

表名是'author'還是'author''?您使用它們兩個 – dstudeba

+0

我在發佈中有200條記錄,而對於創作的表,只有20條記錄。它似乎正在陷入無限循環。我的問題是,我似乎無法得到上述查詢的結果。 – windboy

回答

0

如果ydoow提示可能是鎖定問題,請嘗試使用NOLOCK運行您的選擇以確認。

SELECT a.author_name, count(*) 
    FROM author a WITH (nolock) 
     INNER JOIN publication p WITH (nolock) ON a.publisher_key = p.publisher_key 
    GROUP BY a.author_name 
    ORDER BY 2 desc 
    LIMIT 10; 

你可以在這裏得到更多的信息: Any way to select without causing locking in MySQL?

1

嘗試

SELECT a.author_name, count(*) 
    FROM author a 
     INNER JOIN publication p ON a.publisher_key = p.publisher_key 
    GROUP BY a.author_name 
    ORDER BY 2 desc 
    LIMIT 10; 

你想知道是誰寫的最多數量的書籍,所以您需要根據作者統計註冊管理機構的數量。

order by 2 desc將命令您的查詢從較大的數字到較小的2意味着選擇列表中的第二個字段。

+0

嗨,我試過了SQL查詢,但它仍然進入無限循環。我只是好奇這是什麼做「GROUP BY 2 desc」? – windboy

+0

@windboy這是一個錯字,我已經糾正它。 'ORDER BY 2 desc'還有一個解釋 –

+0

對不起,謝謝。 – windboy