2010-09-30 101 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

相关问题