Oracle子查询返回无记录

时间:2016-09-21 16:35:42

标签: java sql oracle

我们主要使用SQL Server进行查询,但似乎当我们使用Java时,它会在Oracle引擎中运行。在this question中,我要求SQL Server方法计算来自多个表的记录,因为大多数时候SQL Server运行与Oracle相同。我能够从此查询中获取数据:

declare @count table (count1 int, count2 int, count3 int)
INSERT INTO @count
select (SELECT COUNT(*) FROM Bike),
(SELECT COUNT(*) FROM Car),
(SELECT COUNT(*) FROM Truck)
select * from @count;

然而,当把它放在Java中时,我得到一个错误,没有返回任何记录。知道我能在这做什么来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在Oracle中,您需要使用dual表:

select (SELECT COUNT(*) FROM Bike),
       (SELECT COUNT(*) FROM Car),
       (SELECT COUNT(*) FROM Truck)
from dual;

如果您需要在一行中返回这些值,则以下任一数据库都可以使用以下内容:

select b.bcnt, c.ccnt, t.tcnt
from (SELECT COUNT(*) as bcnt FROM Bike) b cross join
     (SELECT COUNT(*) as ccnt FROM Car) c cross join
     (SELECT COUNT(*) as tcnt FROM Truck) t;