2013-12-22 145 views
0

是否有可能通過一個查詢的結果檢索幾個組?sql服務器從一個查詢結果獲得幾個結果

目前我已經返回頂部X行的自由文本圖書標題搜索系統:

首先它查詢書的標題

SELECT TOP 16 grouped_location, grouped_author, book_title 
    FROM books 
    WHERE book_title like '%foo%' 

然後查詢地點組

SELECT grouped_location, COUNT(*) 
    FROM books 
    WHERE book_title like '%foo%' 
    GROUP BY grouped_location 

然後它查詢作者組:....

它是possi可以通過一次搜索檢索這些信息嗎? 通過向SQL服務器發送多個命令,我沒有任何問題,但目標是SQL服務器只執行一次搜索,而不是通過搜索三次來使用所有資源。

請注意,客戶端解決方案(通過將所有記錄返回給客戶端並計算分組結果)不是一種選擇。由於性能原因,它只需要返回TOP X記錄。

回答

0

要查看的信息只能通過grouped_location分組,可以使這樣的事情..

SELECT grouped_location , COUNT(*) Totals 
    FROM 
    (
    SELECT TOP 16 grouped_location, grouped_author, book_title 
    FROM books 
    WHERE book_title like '%foo%' 
    ORDER BY Some_Column 
) Q 
    GROUP BY grouped_location 

要查看All the columns分組的信息,可以使這樣的事情..

SELECT grouped_location, grouped_author, book_title, COUNT(*) Totals 
    FROM 
    (
    SELECT TOP 16 grouped_location, grouped_author, book_title 
    FROM books 
    WHERE book_title like '%foo%' 
    ORDER BY Some_Column 
) Q 
    GROUP BY grouped_location, grouped_author, book_title 
1

這查詢將爲您提供行數,每行的數量由grouped_location計數。 更改ORDER BY以符合您的要求

select top 16 grouped_location, grouped_author, book_title, 
    count(*) over (partition by grouped_location) as [count] 
FROM books 
WHERE book_title like '%foo%' 
-- order by grouped_author or some other column 
order by [count] desc