2012-04-11 82 views
2

我試圖用我的查詢條件以及獲取的使用COUNT(*)表中的記錄數
樣品列表
表:STUD_NAME在oracle中獲取的記錄數

 
Id Name 
1 Steven 
2 smith 
2 Ben 
1 Willy 

我的查詢

select std.name 
from STUD_Name where id='2' 

爲此,它將顯示「Smith」和「Ben」的輸出,以及我需要的STUD_NAME表中的記錄總數。

通過正確的應該顯示的總記錄爲「4」,請幫我解決這個問題,以及如何形成的查詢在這種情況下

回答

1

什麼:

select 
     std.name 
     ,(select count(1) from STUD_Name) nrofstds 
from STUD_Name std where std.id='2' 
3
SELECT name, 
     cnt as total_count 
FROM (
    SELECT id 
      name, 
      count(*) over() as cnt 
    FROM stud_name 
) t 
WHERE id = 2 

假設id是數字列,則不需要圍繞值2的單引號(並且由於在後臺發生的隱式數據類型轉換而實際上是有害的)

+0

+1,但在count(*)行缺少別名。 – 2012-04-11 09:50:43

+0

@AlexPoole:謝謝,糾正 – 2012-04-11 09:51:28

+0

嗨再次在我的查詢中有一些問題,我需要根據我的where條件顯示計數,「select STUD_NAME.name,來自STUD_NAME其中id ='2',我需要顯示匹配的名稱以id「2」+沒有行獲取id'2',其出價優先請幫助我出 – SANJAY 2012-04-16 02:54:25

0
select STUD_NAME.name, CNT.count 
from STUD_NAME 
    , (select count(*) COUNT from STUD_NAME) CNT 
where id='2' 
+0

感謝伴侶,它爲我工作,非常感謝!!! – SANJAY 2012-04-12 03:28:51

+0

嗨再次在我的查詢中的一些問題,我需要根據我的where條件顯示計數「,從STUD_NAME中選擇STUD_NAME.name,其中id ='2',我需要顯示與id」2「匹配的名稱+爲id'2'獲取的行的no,出價優先請幫助我 – SANJAY 2012-04-16 02:53:50