2016-09-21 120 views
0

我們主要使用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中,當我得到的是沒有記錄返回一個錯誤。任何想法我可以在這裏做什麼來解決這個問題?

+0

甲骨文沒有表變量,所以我被你實際運行的代碼弄糊塗了。 –

+0

不管我運行的代碼是什麼,我需要知道的是如何在一個查詢中獲取三個獨立表的計數。 –

+0

我更喜歡通過將查詢存入存儲過程來分離我的java和我的sql。如果你能讓你的sql直接在數據庫上工作,那麼我認爲在一個存儲過程中運行將是一個值得探索的策略。 – mba12

回答

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; 
+0

第二個查詢爲我做了。非常感謝! –