2

クエリ条件とともにCount(*)を使用して、テーブル内のレコード数をフェッチしようとしています。
サンプルテーブルは
テーブルです:STUD_NAME

ID名  
1スティーブン  
2スミス  
2ベン  
1ウィリー

私の質問は

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

このため、出力は「Smith」および「Ben」として表示され、STUD_NAMEテーブルのレコードの総数が必要です。

正しくは、合計レコードが「4」と表示されるはずです。この問題の解決と、この場合のクエリの作成方法を教えてください。

4

3 に答える 3

3
SELECT name, 
       cnt as total_count
FROM (
    SELECT id
           name,
           count(*) over () as cnt
    FROM stud_name
) t
WHERE id = 2

idそれが数値列であると仮定すると、値を一重引用符で囲む2必要はありません (バックグラウンドで行われる暗黙的なデータ型変換により、実際には有害です)

于 2012-04-11T09:42:37.277 に答える
1

どうですか:

select 
       std.name 
      ,(select count(1) from STUD_Name) nrofstds  
from   STUD_Name std where std.id='2'
于 2012-04-11T09:41:44.807 に答える
0
select STUD_NAME.name, CNT.count
from STUD_NAME
   , (select count(*) COUNT from STUD_NAME) CNT
where id='2'
于 2012-04-11T09:45:43.043 に答える