Oracle子查询未返回记录
问题描述:
我们主要使用SQL Server进行查询,但似乎在我们使用Java时,它会在Oracle引擎中运行。在this question中,我询问了从多个表中统计记录的SQL Server方法,因为大部分时间SQL Server与Oracle运行时相同。我能够从中得到查询返回的数据: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中,当我得到的是没有记录返回一个错误。任何想法我可以在这里做什么来解决这个问题?
答
在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;
+0
第二个查询为我做了。非常感谢! –
甲骨文没有表变量,所以我被你实际运行的代码弄糊涂了。 –
不管我运行的代码是什么,我需要知道的是如何在一个查询中获取三个独立表的计数。 –
我更喜欢通过将查询存入存储过程来分离我的java和我的sql。如果你能让你的sql直接在数据库上工作,那么我认为在一个存储过程中运行将是一个值得探索的策略。 – mba12