查询选择count(*)和列

Moz*_*ath 3 sql database oracle count

我有这个查询从表中获取行和查询将返回的行数:

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'
Run Code Online (Sandbox Code Playgroud)

现在,如果你看到我只想要主查询返回的所有其他列的行数.我需要在非常大的查询中将此查询用作子查询.现在我想知道是否有更好的方法来编写此查询.我的意思是我们重复查询只是为了分别计算.那么请您提供更优化的表格

Gor*_*off 7

您应该使用分析函数count():

select tab.*, count(*) over () as totalcnt
from mytable tab
where tab.name = 'XYZ' and tab.type = 'TP'
Run Code Online (Sandbox Code Playgroud)

  • @kyooryu:不,不是.带有附加列的"普通"计数需要在这些列上使用"GROUP BY". (3认同)