查询选择count(*)和列

时间:2013-05-08 13:11:22

标签: 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'

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

1 个答案:

答案 0 :(得分:7)

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

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