2010-09-30 86 views
3

我有一個要求。如何查詢兩個不同表中兩列的最大值?

我有兩個表,說TableA和TableB。都有一個名爲「rec_id」的列。我的要求是使用單個查詢來獲取包含在這兩列中的最大值。

例如:在TableA中,我有「rec_id」值爲{1,5,6},而在TableB中,我有「rec_id」值爲{1,4,2}。因此,在執行查詢之後,我希望結果爲「6」,因爲6是來自這兩個表中這兩列的最大值。

由於事先 阿尼什Kurian表示

回答

7
select max(rec_id) from 
(
    (select rec_id from tablea) 
union all 
    (select rec_id from tableb) 
) combined 
+0

+1你12秒打我! :) – 2010-10-01 00:02:53

+1

@ Bill卡爾文有時它關於技巧的運氣。謝謝 – 2010-10-01 00:12:05

2
select max(rec_id) from 
(
    (select MAX(rec_id) AS rec_id from tablea) 
union 
    (select MAX(rec_id) AS rec_id from tableb) 
) combined 

相較於彌敦道Feger的答案,這將是更好的性能

+0

「與Nathan Feger的答案相比,這將更具性能」 - 不一定;這取決於數據庫引擎如何處理它。實際上,我預計它會稍微惡化一點,因爲您仍然需要掃描兩個表中的所有rec_id值,但是您的查詢必須導出三個最大值,而Nathan只需要導出一個值。 – 2010-10-01 13:24:38

+0

如果索引覆蓋'rec_id',則不會有掃描。最大值取O(1)複雜度。 – zerkms 2010-10-02 04:28:41

+0

您仍然需要通讀索引。 – 2010-10-04 12:52:07

相關問題