3

テーブルから行をフェッチするこのクエリと、クエリが返す行数があります。

SELECT tab.*, 
       (SELECT Count(*) 
        FROM   mytable mtb 
        WHERE  mtb.name = 'XYZ' 
               AND mtb.TYPE = 'TP') 
FROM   mytable tab 
WHERE  tab.name = 'XYZ' 
       AND tab.TYPE = 'TP'

が表示された場合は、メイン クエリが他のすべての列と共に返す行数が必要です。このクエリを非常に大きなクエリのサブクエリとして使用する必要があります。このクエリを記述するためのより良い方法があるかどうかを知りたいです。つまり、カウントを個別に取得するためだけにクエリを繰り返しているということです。より最適化されたフォームを提供してください

4

1 に答える 1

7

分析関数を使用する必要がありますcount()

select tab.*, count(*) over () as totalcnt
from mytable tab
where tab.name = 'XYZ' and tab.type = 'TP'
于 2013-05-08T13:13:04.340 に答える