我有这个查询从表中获取行以及查询将返回的行数:
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'
现在,如果您看到我只想要主查询返回的所有其他列的行数。我需要在非常大的查询中将此查询用作子查询。现在我想知道是否有更好的方法来编写此查询。我的意思是我们重复查询只是为了分别计算。那么请你提供更优化的表格
答案 0 :(得分:7)
您应该使用分析函数count()
:
select tab.*, count(*) over () as totalcnt
from mytable tab
where tab.name = 'XYZ' and tab.type = 'TP'