我有一個要求。如何查詢兩個不同表中兩列的最大值?
我有兩個表,說TableA和TableB。都有一個名爲「rec_id」的列。我的要求是使用單個查詢來獲取包含在這兩列中的最大值。
例如:在TableA中,我有「rec_id」值爲{1,5,6},而在TableB中,我有「rec_id」值爲{1,4,2}。因此,在執行查詢之後,我希望結果爲「6」,因爲6是來自這兩個表中這兩列的最大值。
由於事先 阿尼什Kurian表示
我有一個要求。如何查詢兩個不同表中兩列的最大值?
我有兩個表,說TableA和TableB。都有一個名爲「rec_id」的列。我的要求是使用單個查詢來獲取包含在這兩列中的最大值。
例如:在TableA中,我有「rec_id」值爲{1,5,6},而在TableB中,我有「rec_id」值爲{1,4,2}。因此,在執行查詢之後,我希望結果爲「6」,因爲6是來自這兩個表中這兩列的最大值。
由於事先 阿尼什Kurian表示
select max(rec_id) from
(
(select rec_id from tablea)
union all
(select rec_id from tableb)
) combined
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的答案,這將是更好的性能
「與Nathan Feger的答案相比,這將更具性能」 - 不一定;這取決於數據庫引擎如何處理它。實際上,我預計它會稍微惡化一點,因爲您仍然需要掃描兩個表中的所有rec_id值,但是您的查詢必須導出三個最大值,而Nathan只需要導出一個值。 – 2010-10-01 13:24:38
如果索引覆蓋'rec_id',則不會有掃描。最大值取O(1)複雜度。 – zerkms 2010-10-02 04:28:41
您仍然需要通讀索引。 – 2010-10-04 12:52:07
+1你12秒打我! :) – 2010-10-01 00:02:53
@ Bill卡爾文有時它關於技巧的運氣。謝謝 – 2010-10-01 00:12:05