2010-07-16 48 views
1

這應該很簡單我只是沒有得到想要的結果,我試過這幾個方法,仍然沒有得到任何地方我需要得到子查詢的記錄總數我知道這是完全錯誤的,但是當但是當我把計數的子查詢它仍然給了我1這裏是我的代碼:SQL:需要得到記錄數

SELECT COUNT(*) [COUNT] 
    (
     SELECT WP_BlogEntries.BlogEntryID, sys_Objects_Tags.TagID 
     FROM WP_BlogEntries INNER JOIN sys_Objects_Tags ON 
     WP_BlogEntries.BlogEntryID = sys_Objects_Tags.SystemObjectRecordID 
     WHERE WP_BlogEntries.ReleaseDate < GETDATE() 
     AND WP_BlogEntries.ExpireDate > GETDATE() 
     AND WP_BlogEntries.Approved = 1 
     AND WP_BlogEntries.Listed = 1 
     AND WP_BlogEntries.BlogID = @BlogID 
     AND TagID = @TagID 
     GROUP BY WP_BlogEntries.BlogID, BlogEntryID, sys_Objects_Tags.TagID 
    ) 

回答

2
SELECT COUNT(*) As [COUNT] 
From (
    SELECT WP_BlogEntries.BlogEntryID, sys_Objects_Tags.TagID 
    FROM WP_BlogEntries 
     INNER JOIN sys_Objects_Tags 
      ON WP_BlogEntries.BlogEntryID = sys_Objects_Tags.SystemObjectRecordID 
    WHERE WP_BlogEntries.ReleaseDate < GETDATE() 
     AND WP_BlogEntries.ExpireDate > GETDATE() 
     AND WP_BlogEntries.Approved = 1 
     AND WP_BlogEntries.Listed = 1 
     AND WP_BlogEntries.BlogID = @BlogID 
     AND TagID = @TagID 
    GROUP BY WP_BlogEntries.BlogID, BlogEntryID, sys_Objects_Tags.TagID 
    ) As Z 

您只需別名子查詢,並把它放入FROM子句使其成爲派生表。雖然,如果所有你想要的都是count,你不需要Select子句中的任何東西(也就是說,你可以在子查詢的Select子句中使用Select 1並且它仍然可以工作)

+0

三江源奏效 – ONYX 2010-07-16 02:54:32

0

這會返回多少行在@BlogID您的正常參數,@TagID ?:

SELECT WP_BlogEntries.BlogEntryID, sys_Objects_Tags.TagID 
     FROM WP_BlogEntries INNER JOIN sys_Objects_Tags ON 
     WP_BlogEntries.BlogEntryID = sys_Objects_Tags.SystemObjectRecordID 
     WHERE WP_BlogEntries.ReleaseDate < GETDATE() 
     AND WP_BlogEntries.ExpireDate > GETDATE() 
     AND WP_BlogEntries.Approved = 1 
     AND WP_BlogEntries.Listed = 1 
     AND WP_BlogEntries.BlogID = @BlogID 
     AND TagID = @TagID 
     GROUP BY WP_BlogEntries.BlogID, BlogEntryID, sys_Objects_Tags.TagID 

而且,正如其他人所指出的那樣,你的內部查詢需要一個名字:

SELECT COUNT(*) FROM (
SELECT WP_BlogEntries.BlogEntryID, sys_Objects_Tags.TagID 
     FROM WP_BlogEntries INNER JOIN sys_Objects_Tags ON 
     WP_BlogEntries.BlogEntryID = sys_Objects_Tags.SystemObjectRecordID 
     WHERE WP_BlogEntries.ReleaseDate < GETDATE() 
     AND WP_BlogEntries.ExpireDate > GETDATE() 
     AND WP_BlogEntries.Approved = 1 
     AND WP_BlogEntries.Listed = 1 
     AND WP_BlogEntries.BlogID = @BlogID 
     AND TagID = @TagID 
     GROUP BY WP_BlogEntries.BlogID, BlogEntryID, sys_Objects_Tags.TagID 
) PLEASE 
0
select count(*)as COUNT from (select * from tableName where condition='this' group by ID)as s