33

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

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

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

“缺少表达”

什么是好的语法?

提前致谢。

4

2 回答 2

67

这将表现得更好:

SELECT COUNT(*) OVER (), c.*
FROM CUSTOMER c 
WHERE c.Name like 'foo%';
于 2013-06-20T05:43:27.363 回答
13

一种方法是执行以下操作。这将导致每行的 count(*) 结果。但要注意,有一个笛卡尔连接;如果你有很多行,比如 '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%'
于 2013-06-19T09:08:28.843 回答