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 回答