我有一張書籍表,一個作者表和一個「鏈接器」表(作者/書籍之間的多對多鏈接)。用於計算大多數圖書作者的SQL
如何找到書數最多的作者?
這是我的架構:
書:ROWID,名
作者:ROWID,名
book_authors:ROWID,book_id,AUTHOR_ID
這是我想出了:(但它不工作)
SELECT count(*) IN book_authors
WHERE (SELECT count(*) IN book_authors
WHERE author_id = author_id)
而且我非常希望前100位作者的類似報告,東西:
author_name book_count
-----------------------------------
Johnny 25
Kelly 12
Ramboz 10
我需要某種加入?什麼是最快的方法?
難道你不能僅僅通過Author_ID order by count(1)desc limit 100'選擇count(1),來自Book_Authors組的Author_ID,最多書籍的作者將位於頂部(或author_ID至少)限制到前100 ...然後添加限制子句http://stackoverflow.com/questions/3325515/sqlite-limit-offset-query – xQbert
我想@Mureinik也有一個符合你想要的結果的有效答案。同樣有效,他會盡快發佈。另外,它加入到其他表中,以返回您想要的結果,並允許您根據需要添加這些表中的其他列。它會稍微慢一點,因爲它必須處理連接,但它會返回所要求的內容。 – xQbert
如果您沒有book/author表中的rowID索引和book_authors中的Author_ID,Book_ID a索引,則顯着較慢的唯一原因是。或者你真的有數百萬的記錄在表格中。 – xQbert