如何选择所有列,以及同一查询中的计数(*)

时间:2013-06-19 09:01:32

标签: sql oracle

经常在TSQL中使用以下查询:

SELECT COUNT(*), * 
FROM CUSTOMER c 
WHERE c.Name like 'foo%';

当我尝试在Oracle SQL Developer中执行此查询时,它不起作用并向我抛出错误:

  

“缺少表达”

什么是好的语法?

提前致谢。

2 个答案:

答案 0 :(得分:50)

这样做会更好:

SELECT COUNT(*) OVER (), c.*
FROM CUSTOMER c 
WHERE c.Name like 'foo%';

答案 1 :(得分:8)

一种方法是执行以下操作。这将导致每行的计数(*)结果。但要注意,有一个Cartesianjoin;如果你有很多像'foo%'那样的行,这将会表现不佳。

select a.cntr, c.*
from CUSTOMER c 
   , (select count(*) cntr
     from customer b
     where b.name like 'foo%' ) a
where c.name like 'foo%'