2016-11-22 29 views
2

我想從所有行(每個查詢)的表+計數中選擇不同行(每頁)的固定大小。還有就是我的查詢,而所有的行數:SQL中不同行的數量

select distinct takenBookTitle, user from Books 
where user = 'username' 
order by takenBookTitle 
offset 0 rows fetch next 3 rows only 

但是對這個結果,我需要檢索所有的行數(不偏移..提取)。

select takenBookTitle, user, count(*) OVER() AS count 
from Books 
where user = 'username' 
order by takenBookTitle offset 0 rows fetch next 3 rows only 

結果:

BookTitle1 userName1 10 
BookTitle2 userName2 10 
BookTitle3 userName3 10 

但我想算不同

如果不同,沒有必要將它與COUNT(*)OVER()完成 rows but count()OVER()*不允許。

+0

任何你不會在這裏使用兩個查詢的原因,一個得到總結果數和另一個來檢索單個結果?似乎有點愚蠢地返回每個結果的相同信息(不同行的總數)。 – smj

+0

@smj不同行的總數是我的數據表在客戶端使用的值,我需要在每個select查詢中返回此值。理論我可以使用單獨的查詢來選擇這個計數,但在我的情況下這不是好的方法。 – Ddd

回答

0

你可以用相同的約束(where子句)和交叉連接到它的另一個查詢計算count,因爲它只包含一行所以同樣的信息也會相應追加到每一行:

select 
    t.*, g.cnt 
from (
    select distinct takenBookTitle, user from Books 
    where user = 'username' 
    order by user offset 0 rows fetch next 3 rows only 
) t 
cross join (
    select count(*) as cnt 
    from Books 
    where user = 'username' 
) g 

我想知道,如果您的Where子句只指定一個,您爲什麼要訂購user,但您可能正在爲此使用多個用戶,並向我們展示了簡化的查詢。如果沒有,那麼這個命令似乎是不必要的

相關問題